定义:
字典是一种无无序的组合数据类型,不可遍历,没有索引,是由键值对--即key,value组成,其“键”只能是不可变(可哈希)的数据类型如:字符串,元祖... 字典的值可以是任何数据类型,也可以嵌套。
这里说下为什么字典的查询速度快,是因为字典的“键”是被哈希(散列)后存储的,查找数据的时候以二分法查找,相对与遍历的查找比较起来就会速度快很多。
方法:
创建字典有很多种方法
dict1 = {'name': 'peter', 'age': 20}
dict2 = dict(name='peter', age=20)
dict3 = dict(zip(['name', 'age'], ['peter', 20]))
上面三种方法输出结果都是
{'name': 'peter', 'age': 20}
向字典中添加值,值得注意的是,如果要添加的“键”已经存在,将会把已存在的键值对覆盖
dict1['job']='coder'
下面列举一些常用的方法
dict1.get('name') # 返回键name相关联的值,如果不存在键name,返回None
peter
dict1.get('country', 'no key') # 如果存在键name就返回相对应的值,不存在返回'no key'
no key
dict1.keys() # 返回字典的键列表
dict_keys(['name', 'age', 'job'])
dict1.values() # 返回字典的值列表
dict_values(['peter', 20, 'coder'])
dict1.items() # 返回字典的键值对的视图列表
dict_items([('name', 'peter'), ('age', 20), ('job', 'coder')])
dict1.pop('name') # 移除并返回键name所对应的值
peter # dict1现在为{'age': 20, 'job': 'coder'}
dict1.clear() # 删除字典内所有的元素
合并两个字典
dict4 = {'hobby': 'read', 'sex': '未知'}
dict5 = {'salary': 200, 'childname': 'jenny'}
dict4.update(dict5) # 将字典dict5的键值对更新到字典dict4里
dict4
{'hobby': 'read', 'sex': '未知', 'salary': 200, 'childname': 'jenny'}
dict6 = {'name': 'william'}
dict7 = {**dict5, **dict6} # 将两个字典的键值对赋给新的字典
dict7
{'salary': 200, 'childname': 'jenny', 'name': 'william'}
反转key,value值,这种方法不是很靠谱,当值有重复的时候会覆盖,看看就好
dict8 = dict(name='peter', age=20)
dict9 = {k: v for v, k in dict8.items()}
dict9
{'peter': 'name', 20: 'age'}