一种序列类型,使用键-值(key-value)存储,具有极快的查找速度。
目录
key的特性
创建字典
元素的访问
Get获取
修改
是否存在key
删除
删除单个
删除全部
遍历
遍历key与值
只遍历值
遍历key,value方法2
结合enumerate遍历
和list比较
总结
key的特性
1.字典中的key必须唯一
2.key必须是不可变对象
3.字符串、整数等都是不可变的,可以作为key
4.list是可变的,不能作为key
注意:字典是无序的,存储先后顺序不等于最终字典顺序。
创建字典
dict1 = {'hanmei': 85, 'lilei': 80}
元素的访问
获取:字典名[key]
例:
print(dict1['hanmei']) # 85
print(dict1['lilei']) # 80
当没有的时候,如果这时去获取,就会报错。
print(dict1['zhangsan'])
如下:
Get获取
使用.get方式获取,可设置默认值在获取不到时返回。
代码如下:
res = dict1.get('zhangsan')
if res == None:
print('没有')
else:
print('有')
效果:
没有
修改
因为一个key对应一个value,所以再次对同一个key的value进行赋值,
就会修改原有key的value值。
代码如下:
dict1['zhangsan'] = 99
dict1['lilei'] = 88
print(dict1) # {'hanmei': 85, 'lilei': 88, 'zhangsan': 99}
是否存在key
使用in来判断相应key是否存在字典中。
代码如下:
dict2 = {'hanmei': 85, 'lilei': 80, 'zhangsan': 99, 'lisi': 88}
print('zhangsan' in dict2) # True
删除
删除单个
删除可使用.pop(key)方式删除相应key-value
代码如下:
# 韩梅转学了
dict1.pop('hanmei')
print(dict1)
效果:
{'hanmei': 85, 'lilei': 88, 'zhangsan': 99}
{'lilei': 88, 'zhangsan': 99}
删除全部
使用.clear()方法,来删除字典所有的键值对。
代码如下:
dict2 = {'hanmei': 85, 'lilei': 80, 'zhangsan': 99, 'lisi': 88}
dict2.clear()
print(dict2) # {}
当删除所有键值对后,打印出来的就是空字典。
遍历
遍历key与值
dict2 = {'hanmei': 85, 'lilei': 80, 'zhangsan': 99, 'lisi': 88}
for key in dict2:
print(key, dict2[key])
效果:
hanmei 85
lilei 80
zhangsan 99
lisi 88
只遍历值
使用.values()方式获取字典所有值,为一个列表类型。
代码如下:
print(dict2.values())
for value in dict2.values():
print(value)
效果:
dict_values([85, 80, 99, 88])
85
80
99
88
遍历key,value方法2
可通过字典的items()方法获取中的所有键值对,用来遍历。
代码如下:
for k, v in dict2.items():
print(k, '=>', v)
效果:
hanmei => 85
lilei => 80
zhangsan => 99
lisi => 88
结合enumerate遍历
还有一种遍历key和value的方式。
for i, v in enumerate(dict2):
print(i, '=>', v)
效果:
0 => hanmei
1 => lilei
2 => zhangsan
3 => lisi
和list比较
1.查找和插入的速度极快,不会随着key-value的增加而变慢。
2.需要占用大量的内存,内存浪费多。
总结
应用场景比较多,可以在复杂场景中使用,使用起来也比较灵活,类似与php的array数据类型。