一、创建字典的方式
1、基本方式:
a = {‘name‘:‘tom‘,‘age‘:18}
2、在空字典中填入元素:
a = {} # 创建空列表 print(dict(name=‘tom‘, age=18)) # 结果为 {‘name‘: ‘tom‘, ‘age‘: 18}
3、快速初始化一个字典fromkeys:
x = [‘name‘, ‘age‘] # 此处还可以为字符串,元组等for循环可遍历的类型 a = {}.fromkeys(x, None) # 将遍历到的值作为key,对应的value都为None print(a) # 结果为 {‘name‘: None, ‘age‘: None}
4、类型转换:适用对象为元组或者列表。
info = [ [‘name‘, ‘tom‘], (‘age‘, 18) ] # 列表或元组中的元素必须为包含元素个数为2的子列表或子元组 a = dict(info) # 将子列表或资源组的两个元组分别作为key与value组成字典 print(a) # 结果为 {‘name‘: ‘tom‘, ‘age‘: 18}
二、内置功能
1、按key存取值:
info = {‘name‘: ‘tom‘, ‘age‘: 18} print(info[‘name‘]) # 按key取value,结果为 tom info[‘age‘] = 20 # key存在,修改对应的value print(info) # 结果为 {‘name‘: ‘tom‘, ‘age‘: 20} info[‘gender‘] = ‘male‘ # key不存在,能添加为新元素 print(info) # 结果为 {‘name‘: ‘tom‘, ‘age‘: 20, ‘gender‘: ‘male‘}
2、长度:统计元素个数。
info = {‘name‘: ‘tom‘, ‘age‘: 18} print(len(info)) # 结果为 2
3、成员运算in和not in:根据key。
info = {‘name‘: ‘tom‘, ‘age‘: 18} print(‘name‘ in info) # 结果为 True print(‘age‘ not in info) # 结果为 False
4、删除相关:
①通用删除del:
info = {‘name‘: ‘tom‘, ‘age‘: 18} del info[‘age‘] print(info) # 结果为 {‘name‘: ‘tom‘}
②移出pop:根据key锁定对应元素,移出该元素,只返回该元素的value。
info = {‘name‘: ‘tom‘, ‘age‘: 18} print(info.pop(‘name‘)) # 结果为 tom print(info) # 结果为 {‘age‘: 18}
③随机移出popitem:随机锁定某一元素,把其key和value组合为元组返回。
info = {‘name‘: ‘tom‘, ‘age‘: 18} print(info.popitem()) # 结果为 (‘age‘, 18) print(info) # 结果为 {‘name‘: ‘tom‘}
④清除clear:清除字典内所有元素,结果为一个空字典,无返回值。
info = {‘name‘: ‘tom‘, ‘age‘: 18} info.clear() print(info) # 结果为{}
5、提取keys,values,items:在python2中会分别以keys,values,键值对items为元素生成列表,在python3中只是生成一个带指向功能占很小空间的中间量,一般与for循环搭配。
info = {‘name‘: ‘tom‘, ‘age‘: 18} print(info.keys()) # 结果相当于有个可以指向 [‘name‘, ‘age‘]的量 print(info.values()) # 结果相当于有个可以指向 [‘tom‘, 18]的量 print(info.items()) # 结果相当于有个可以指向[(‘name‘, ‘tom‘), (‘age‘, 18)]的量 for a in info.items(): print(a) # 结果为两次:(‘name‘, ‘tom‘) (‘age‘, 18)
6、更新updata:把新字典的元素拷贝填入老字典,key不同的元素共存于老字典,key相同的元素的value取新字典的value,此操作对新字典没有影响。
info = {‘name‘: ‘tom‘, ‘age‘: 18} # 老字典独有‘name‘: ‘tom‘ info_new = {‘age‘: 20, ‘gender‘: ‘male‘} # 新字典独有‘gender‘:‘male‘ info.update(info_new) # 两者共有key(‘age‘),取新字典的对应value(20) print(info) # 结果为 {‘name‘: ‘tom‘, ‘age‘: 20, ‘gender‘: ‘male‘} print(info_new) # 新字典无影响,结果为 {‘age‘: 20, ‘gender‘: ‘male‘}
7、寻值get:检索字典,若存在get声明的key,返回对应的value,不存在该key,返回None,比起直接取值,不会因为key不存在而导致程序崩溃,容错性好。
info = {‘name‘: ‘tom‘, ‘age‘: 18} print(info.get(‘name‘)) # 结果为tom print(info.get(‘gender‘)) # 不存在的key,结果为None print(info(‘gender‘)) # 直接取值时按照不存在的key,直接报错
8、替补setdefault:声明一个键值对,若目标字典中不存在该键值对的key,则将该键值对填入字典,并返回该键值对的value。若存在该键值对的key,则不进行任何操作,并返回字典中该key的value。
info = {‘name‘: ‘tom‘, ‘age‘: 18} print(info.setdefault(‘gender‘, ‘male‘)) # 没有key(‘gender‘),填入该键值对,返回该value,结果为 male print(info) # 结果为 {‘name‘: ‘tom‘, ‘age‘: 18, ‘gender‘: ‘male‘} print(info.setdefault(‘age‘, 20)) # 有key(‘age‘),不做任何操作,返回字典中对应的value,结果为 18 print(info) # 结果为 {‘name‘: ‘tom‘, ‘age‘: 18, ‘gender‘: ‘male‘}
原文:https://www.cnblogs.com/caoyu080202201/p/12464318.html