五、python沉淀之路--字典
一、
1、根据序列,创建字典,并指定统一的值
v = dict.fromkeys(["k1",1234,"999"],222) print(v)
1 {'k1': 222, 1234: 222, '999': 222}
2、根据key 获取值,key不存在时,报错;get方法,存在时返回对应值,不存在时返回后面代替值,不会报错 。
1 dic = { 2 "k1":'v1', 3 "k2":'v2' 4 } 5 v= dic.get('k3',1111) 6 print(v)
1 1111
3、pop:删除并返回值,如果不存在时,返回后面备用的值,不会报错
1 dic = { 2 "k1":'v1', 3 "k2":'v2' 4 } 5 v1 = dic.pop('k3',90) 6 print(dic,v1) 7 v = dic.pop('k1',90) 8 print(dic,v)
1 {'k1': 'v1', 'k2': 'v2'} 90 2 {'k2': 'v2'} v1
4、popitem的用法:同时删除键和值
1 dic = { 2 "k1":'v1', 3 "k2":'v2' 4 } 5 k,v = dic.popitem() 6 print(k,v,dic)
1 k2 v2 {'k1': 'v1'}
5、setdefault的用法
已存在,不设置,获取当前key对应的值
不存在,设置,获取当前key对应的值
1 dic = { 2 "k1":'v1', 3 "k2":'v2' 4 } 5 v = dic.setdefault('k111','123') 6 print(dic,v) 7 v1 = dic.setdefault('k1','123') 8 print(dic,v1)
1 {'k1': 'v1', 'k2': 'v2', 'k111': '123'} 123 2 {'k1': 'v1', 'k2': 'v2', 'k111': '123'} v1
6、update更新,有则更新,无则添加
1 dic = { 2 "k1":'v1', 3 "k2":'v2' 4 } 5 dic.update({"k1":'111',"k2":'222',"k3":'333'}) 6 print(dic) 7 dic.update(k1=99,k2=88,) 8 print(dic)
1 {'k1': '111', 'k2': '222', 'k3': '333'} 2 {'k1': 99, 'k2': 88, 'k3': '333'}
7、 keys() values() items() get update
二、
1、基本结构:键值对
1 info = { 2 "k1": "v1", # 键值对 3 "k2": "v2" 4 }
2、字典的value可以值任意值。
1 info = { 2 "k1": 18, 3 "k2": True, 4 "k3": [ 5 11, 6 [], 7 (), 8 22, 9 33, 10 { 11 'kk1': 'vv1', 12 'kk2': 'vv2', 13 'kk3': (11,22), 14 } 15 ], 16 "k4": (11,22,33,44) 17 }
3、字典:无序。通过多打印几次就可以看到,每次顺序不一样
4、布尔值(1,0)【当key值中已经有0或1存在时】、列表、字典不能作为字典的key。
1 info ={ 2 2: 'asdf', 3 "k1": 'asdf', 4 True: "123", 5 # [11,22]: 123 列表可变,固不能作为key 6 (11,22): 123, 7 # {'k1':'v1'}: 123 字典可变,固不能作为key 8 9 }
5、字典可以通过索引key 键来找到对应的值
6、字典支持del的方式来删除,
1 dic = { 2 "k1":'v1', 3 "k2":'v2' 4 } 5 6 del dic["k1"] 7 print(dic)
1 {'k2': 'v2'}
7、字典支持for循环,配合一起用的有: .keys() .values() .items()
1 dic = { 2 "k1":'v1', 3 "k2":'v2', 4 "k3":'v3' 5 } 6 7 for item in dic: 8 print(item) 9 for i in dic.keys(): 10 print(i) 11 for n in dic.values(): 12 print(n) 13 for k,v in dic.items(): 14 print(k,v)
1 k1 2 k2 3 k3 4 k1 5 k2 6 k3 7 v1 8 v2 9 v3 10 k1 v1 11 k2 v2 12 k3 v3
补充:
enumerate 的用法,以及与len range for 配合使用
- enumerate()是python的内置函数
- enumerate在字典上是枚举、列举的意思
- 对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
- enumerate多用于在for循环中得到计数
1 li = ["我","要","测","试"] 2 for n in range(len(li)): 3 print(n) 4 5 for index,item in enumerate(li): 6 print(index,item) 7 for index,item in enumerate(li,1): 8 print(index,item
1 0 2 1 3 2 4 3 5 0 我 6 1 要 7 2 测 8 3 试 9 1 我 10 2 要 11 3 测 12 4 试