数据类型内置方法的补充

字典

1.定义方式

  在{}括起来的内容,包含多个元素,每个元素中间用逗号隔开,元素以k:v键值对的形式出现

  eg: d = {'name': 'Jolly')

  还可以这样定义字典:

  info = dict(name = 'kevin',age = 18)   # {'name': 'kevin', 'age' =18}

# 定义一个空字典: s = {}

2.类型转换

1 s = dict([['name', 'kevin'], ('age', 18)])
2 print(s)

 

运行结果:

3.内置方法

 1.通过key取值

 dic = {'name': 'xxx', 

        'age': 18, 

       'hobbies': ['play game', 'basketball']
       }
print(dic['name'])

运行结果:

 2.赋值操作

d = {'name': 'kevin', 'age': 18, 'hobbies': ['play game', 'basketball']}
d['name'] = 'Jolly' # k值存在,则是修改操作
d['gender'] = 'male' # k值不存在,就是添加一个k值
print(d)

运行结果:

 3.成员运算in和not in

d = {'name': 'Jolly', 'age': '18'}
print('kevin' in d)  # False 判断某个值是否是字典的key
print('name' in d)  # True
print('kevin' not in d)  # True

运行结果:

当查询的key在字典里时,结果为True,若不在则为False

 

4.求长度(len)

dic1 = {'name':'xxx'}
dic1['name'] = 'yyy'   # k存在,所以将原本k的值修改了
dic1['age'] = 'aaa'   # k 不存在,所以添加一个k值
dic1['gender'] = 'male'
print(dic1)
print(len(dic1))

运行结果:

 5.删除(pop / del)

d = {'name': 'kevin', 'age': '18', 'hobby': 'music'}
d.pop('name')  # 通过删除k值来进行删除操作,不能通过索引删除值
del d['age']
print(d)

通过指定字典的key来删除字典的键值对

运行结果:

 6.键keys()、值values()及键值对items()

1.

d = {'name': 'kevin', 'age': '18'}
print(d.keys())  # dict_keys(['name', 'age']),将字典里的所以key拿出来,组装成列表返回
print(d.values())  # dict_values(['kevin', '18']),将字典的所以value值拿出来,组装成列表返回
print(d.items())  # 将字典里的k和v以列表套元组的形成返回,dict_items([('name', 'kevin'), ('age', '18')])

运行结果:

2.

d = {'name': 'kevin', 'age': '18'}
for i in d.keys():
    print(i)  # name age
for j in d.values():
    print(j) # kevin 18
for k in d.items():  # 以元组形式返回值
    # print(k)# ('name', 'kevin') ('age', '18')
    print(k[0], k[1])# name kevin age 18

运行结果:

 7.字典的其他用法

1、get()

如果key存在,那么就会取出相应的值;如果key不存在,则返回None。

比如:

d = {'name': 'kevin', 'age': '18'}
print(d['name'])  # kevin
print(d.get('name'))  # kevin
print(d.get('username'))  # get取值,key存在,则取出对应的值,若不存在,则返回None
if d.get('username'):
    print('youzhi')
else:
    print('wuzhi')
print(d.get('username','xxx'))   # key不存在时,可以设置默认返回的值

运行结果:

   字典取值推荐使用get取值,不会直接报错

2、pop()

d = {'name':'jack','age':'18','gender':'male'}
print(d.popitem())# 代表的是删除字典的元素。但是,删除的值末尾的k:v,并把最后一个k:v弹出来了   ('gender', 'male')
print(d)# {'name': 'jack', 'age': '18'}

运行结果:

'''代表的是删除字典的元素。但是,删除的值末尾的k:v,并且把最后一个k:v弹出来了'''

3、update

  update的功能是:如果k存在于字典中,那么就修改k的值;如果k不在字典中,则添加一个新值

d = {'name': 'kevin', 'age': '18', 'gender': 'male'}
d1 = {'username': 'jack', 'hobby': 'music'}
d.update(d1)
print(d)  # {'name': 'kevin', 'age': '18', 'gender': 'male', 'username': 'jack', 'hobby': 'music'}

运行结果:

 4、fromkeys(了解)

fromkeys 的作用:相当于是给字典批量赋值

dic = dict.fromkeys(['k1', 'k2', 'k3'], [])
print(dic)  # {'k1': [], 'k2': [], 'k3': []}
'''
fromkeys 初始化出来的值,占用的是一样的内存空间地址,有一个值改变了,其他值跟着改变
'''
dic['k1'].append(88)  # {'k1': [88], 'k2': [88], 'k3': [88]}
dic['k2'].append(66)  # {'k1': [88, 66], 'k2': [88, 66], 'k3': [88, 66]}
print(dic)

运行结果:

 

5、setdefaulet

key不存在则新增键值对,并将新增的value返回

dic = {'k1': 111,'k2': 222}
res = dic.setdefault('k3',333)
print(dic)
print(res)

运行结果:

 元组

元组的定义:

"""
使用小括号括起来,内部存放多个元素,元素之间逗号个隔开,元素值不支持修改(索引对应的那个元素不能修),不可变的列表
"""

1.类型转换

不能转换整型,浮点型

print(tuple('hello'))  # 字符串转元组
print(tuple([1, 2, 3, 4, 5]))  # 列表转元组
print(tuple({'a': 1, 'b': 2}))  # 字典转元组
print(tuple({1, 2, 3}))  # 集合转元组

运行结果:

 

2.索引取值

t = (1,2,3,4)
print(t[0])
print(t[1])
print(t[2])
print(t[3])
print(t[-1])# - 代表从反方向取值

运行结果:

 

3.切片

t = (1,2,3,4)
print
(t[0:2]) print(t[0:]) print(t[:2]) print(t[0:3:2])

运行结果:

 4.求长度(len)

print(len(t))

5、循环遍历

t = (1,2,3,4)
for line in t:
    print(line)

结果:

 

t1 = (123)
t2 = (1.123)
t3 = (1)
t4 = (1234, )
# <class 'int'>  <class 'float'>  <class 'int'>
print(type(t1), type(t2), type(t3), type(t4)) # <class 'tuple'>

'''当元组内只有一个元素的时候,也要加上逗号结尾,否则不是元组类型!'''

l = [1, ]
print(type(l)) # <class 'list'>

  '''建议:
    只要是容器类型,当元素只有一个的时候,建议都加上逗号
  容器类型:
    只要是能够存放多个元素的数据类型都可以称之为是容器类型
  '''

集合(set)的内置方法

1.定义

  使用大括号括起来,内部存放多个元素,元素之间逗号隔开,不是k:v键值对的形式

2.作用

集合的功能:去重、集合运算、无序

3.定义一个空集合

s = set()

整型、浮点型都不能转换为集合

print(set('hello'))  # {'e', 'o', 'l', 'h'}
print(set([1, 2, 3, 4, 4, 3, 2, 1]))  # {1, 2, 3, 4}
print(set((1, 2, 3, 4, 5)))  # {1, 2, 3, 4, 5}
print(set({'username': 'kevin', 'age': 28}))  # {'age', 'username'}

  集合能够把支持for循环的数据类型都转为集合类型

4.课堂练习

1.name_list =  ['kevin', 'tank', 'tony', 'tony', 'jack', 'jack', 'jack', 'tony', 'ly'],去掉name_list中的重复元素

# 去重
name_list = ['kevin', 'tank', 'tony', 'tony', 'jack', 'jack', 'jack', 'tony', 'ly']
print(set(name_list))  # {'jack', 'ly', 'tony', 'tank', 'kevin'}
print(list(set(name_list)))  # ['jack', 'ly', 'tony', 'tank', 'kevin']

结果:

 2.# 去重,并且保留原来的顺序

name_list = ['kevin', 'tank', 'tony', 'tony', 'jack', 'jack', 'jack', 'tony', 'ly']
new_list = []  # 定义一个新的列表用来存放取出来的元素
for name in name_list:
    if name not in new_list:
        new_list.append(name)  # 添加元素值
print(new_list)

结果:

 5.集合运算关系

friends1 = {'zero', 'kevin', 'jason', 'egon'} friends2 = {'jy', 'ricky', 'jason', 'egon'}
# 1.合集/并集(|):求两个用户所有的好友(重复好友只留一个)
print(friends1 | friends2)  # {'ricky', 'jason', 'jy', 'kevin', 'egon', 'zero'}
# 2.交集(&)共同好友
print(friends1 & friends2)  # {'egon', 'jason'}
# 3.差集(-)
print(friends1 - friends2)  # {'kevin', 'zero'}
# 4.对称差集(^),求两用户独有的好友们
print(friends1 ^ friends2)  # 'ricky', 'zero', 'jy', 'kevin'}
# 5.值是否相等(==)
print(friends1 == friends2)  # False
# 6.父集:一个集合是否包含另外一个集合
print({1, 2, 3} >= {1, 2, 3})  # True
print({1, 2, 3} < {1, 2})  # False
 
posted @ 2023-05-22 19:49  Maverick-Lucky  阅读(22)  评论(0)    收藏  举报