数据类型内置方法的补充
字典
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
浙公网安备 33010602011771号