一、是什么
字典是一个无序、可变和有索引的集合。在 Python 中,字典用“{}”编写,以键值对出现。
例: dec = {'张三':75,' '小华':98, '李四':84}
dec —》字典名(自定义) '张三'—》键 75—》值 “ :”—》键与值分隔 “,” —》每一个键值对的分隔
原理:根据key(哈希值)查找value所在位置
二、创建
1,使用{}
dec = {'张三':85, '王五':75, '小华':89}
2.使用内置函数dict()
dict(name = 'cor', age = 23)
【注】如果键相同时,会输出最后一个键相同的值(覆盖)。
三、获取
1.“[ ]”
dec = {'张三':85, '王五':75, '小华':89}
num = dec['张三']
print(num)
85
2.get()方法
dec = {'张三':85, '王五':75, '小华':89}
num = dec.get('小华')
print(num)
89
【区别】1.[ ]字典中不存在时指定key,会抛出:keyEerror
2.get()方法取值,字典中不存在时会返回None,可以通过参数设置默认value,以便指定的key不存在时返回。
dec = {'张三':85, '王五':75, '小华':89}
1.print(dec.get('小米'))
2.print(dec.get('小米',100))
None
100
【注】get()方法:在字典没有找到指定的key,将会返回自定义的参数,否则返回字典中指定key,的value。
四、操作
1.是否在
dec = {'张三':85, '王五':75, '小华':89}
print('张三' in dec)
print('张三' not in dec)
True
Flase
2. 删除
dec = {'张三':85, '王五':75, '小华':89}
del dec['张三']
print(dec)
{ '王五':75, '小华':89}
3.新增
dec = {'张三':85, '王五':75, '小华':89}
dec['小米']=100
print(dec)
{'张三':85, '王五':75, '小华':89,'小米’:100}
4.修改
dec = {'张三':85, '王五':75, '小华':89}
dec['小米] = 120
print(dec)
{'张三':85, '王五':75, '小华':89,'小米’:120}
五、视图
1.keys()获取字典中所以的键
dec = {'张三':85, '王五':75, '小华':89}
tmp = dec.kyes()
print(list(tmp),type(tmp)
['张三', '王五', '小华'] <class 'dict_keys'
2.values()获取字典中所以的值
dec = {'张三':85, '王五':75, '小华':89}
tmp = dec.values()
print(list(tmp),type(tmp)
[85, 75, 89] <class 'dict_values'
3.items() 获取字典中所以的键值对
dec = {'张三':85, '王五':75, '小华':89}
tmp = dec.items()
print(list(tmp),type(tmp)
['张三':85, '王五':75, '小华':89] <class 'dict_items'
【注】list( )函数作用转换为列表
六、遍历
for tup in dec:
print(tup,dec[tup],dec.get(tup))
张三 85 85
王五 75 75
小华 89 89
【注】tup时变量,接受字典中的键
七、生成式
num = ['小米', 'C罗', '李四']
ed = [45, 39, 60]
dec = {item : price for item,price in zip(num,ed)}
print(dec)
{'小米':45, 'C罗':39,'李四':60}
【注】1.zip( ) 函数,合成字典数据结构。(假如num与ed的数量不一致,按数量少的算)
2.num是键的列表,ed是值的列表
八、特点
1.键不可以重复,否则会被后面的覆盖。
2.元素无序(无法指定位置插入元素)
3.key必须是不可变对象
4.可以根据需要动态伸缩
5.会浪费大量内存,是一种使用空间换时间的数据结构
6.不会根据创建时间顺序,放置在内存的先后顺序(如下图)