目录
1.优先掌握(key取值,len(),删除3,各种取值方式,for循环)
2.需要掌握(clear(),update,get(),setdafault())
·作用,定义:
定义:
{}内用逗号分隔开key:value,其中value可以是任意类型,但key必须是不可变类型且不能重复
d1 = {'k1': 123, (123, 'v'): 456}
print(d1['k1']) # 123
print(d1[(123, 'v')]) # 456
print(type(d1)) # <class 'dict'>
造空字典:
方式1:
d2 = dict()
print(d2, type(d2)) # {} <class 'dict'>
方式2:
d3 = {} # 默认定义空字典
print(d3, type(d3)) # {} <class 'dict'>
例子:
d4 = dict(x=1, y=2, z=3)
print(d4) # {'x': 1, 'y': 2, 'z': 3}
·数据类型转换(造字典)
对值==>转换成字典:
info = [['name', 'zcy'], ('age', 18), ['score', 98]]
d5 = {}
1.方法一:
for i in info:
d5[i[0]] = i[1] # d5空字典的i[0]=i[1]
print(d5) # {'name': 'zcy', 'age': 18, 'score': 98}
1.1方法一进阶:
for k, v in info:
d5[k] = v
print(d5) # {'name': 'zcy', 'age': 18, 'score': 98}
2.方法二: 用dict直接造字典:一行代码搞定(必须是两个值)
res = dict(info)
print(res) # {'name': 'zcy', 'age': 18, 'score': 98}
单值==>转换成字典 快速(初始化)造字典:
keys = ['name', 'age', 'score']
1.方法一:
d6 = {}
for k in keys:
d6[k] = None
print(d6) # {'name': None, 'age': None, 'score': None}
2.方法二:
d7 = {}.fromkeys(keys, None)
print(d7) # {'name': None, 'age': None, 'score': None}
·内置方法
1.优先掌握(key取值,len(),删除3,各种取值方式,for循环)
1.按key存取值:可存可取
d = {'k1': 123}
针对赋值操作:key存在,则修改:
d['k1'] = 222
print(d) # {'k1': 222}
针对赋值操作:key不存在,则创建并添加进去:
d['k2'] = 456
print(d) # {'k1': 123, 456}
2.长度len():若key重复就只取第一个
d = {'k1': 111, 'k2': 222, 'k3': 444}
print(len(d)) # 3
3.成员运算in和not in 值判断key
d = {'k1': 111, 'k2': 222, 'k3': 444}
print('k1' in d) # True
4.删除
d = {'k1': 111, 'k2': 222, 'k3': 444}
4.1通用删除del:
del d['k1']
print(d) # {'k2': 222, 'k3': 444}
4.2.pop()删除 返回被删value值:
res = d.pop('k2')
print(d) # {'k1': 111, 'k3': 444}
print(res) # 222
4.3.popitem()随机删 返回元组:被删除的(key:value)
res1 = d.popitem()
print(d) # {'k1': 111, 'k2': 222}
5.键keys(),值values(),健值对items()
d = {'k1': 111, 'k2': 222, 'k3': 444}
print(d.keys()) # 打印key值
print(d.values()) # 打印value值
print(d.items()) # key:value为元组的列表
6.for循环
d = {'k1': 111, 'k2': 222, 'k3': 444}
for i in d.keys():
print(i) # k1 k2 k3
for j in d.values():
print(j) # 111 222 444
for item in d.items():
print(item) # ('k1', 111) ('k2', 222) ('k3', 444)
for k, v in d.items():
print(k, v) # k1 111 k2 222 k3 444
循环后转换为列表:
print(list(d.keys())) # ['k1', 'k2', 'k3']
print(list(d.values())) # [111, 222, 444]
print(list(d.items())) # [('k1', 111), ('k2', 222), ('k3', 444)]
2.需要掌握(clear(),update,get(),setdafault())
d = {'k1': 111}
1.clear():清除
res = d.clear()
print(res) # {}
2.update():更新,将新字典加到老字典中
若新字典有与旧字典相同的key,以新字典key为主
d.update({'k2': 222, 'k3': 333})
print(d) # {'k1': 111, 'k2': 222, 'k3': 333}
3.get():查key的索引,key不存在时返回None 容错性好
print(d['k2']) # 报错
print(d.get('k2') # None
print(d.get('k2', 123)) # 返回123
4.setdefault(): 当原字典中某key存在时,不添加,
相反当原字典中某值不存在时,从set字典中添加到原字典中
返回字典中key对应的值(value)
当原字key典存在时:
res = d.setdefault('k1', 222)
print(d) # {'k1': 111}
print(res) # 111
当原字key典不存在时:
res = d1.setdefault('k2', 2233)
print(d) # {'k1': 111, 'k2': 2233}
print(res) # 2233
·总结:
- 列表,元组为有序类型, 字典为无序类型
- 列表,元组,字典都能存多个值,称为容器类型
- 列表,字典为可变类型, 元组为不可变类型(只读不改)