dict
即字典,是另一种可变容器类模型,可存储任意类型对象。
key:value形式,取值速度快
key必须是不可变类型且唯一,所以key用字符串吗,数字,元组
(布尔值也可以作为key,不过可能与0或者1重复,key重复时只保留后一个显示,把前面的给覆盖掉),value可以是任意类型,可以不唯一,不能是空字符
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:
1 d1={"name":"garrett","age":123}
支持for循环
字典可变,但有序(3.6版本开始的),不能索引和切片,但是就可以通过key来取值,或者用get()方法用key取值(get()可定义无查找对象时的返回值)
字典支持删除
1 d3={ 2 11:12, 3 "12":123, 4 True:124, 5 #[1,2]:12,#list不能当key 6 (12,3):12,#元组不能修改,可以 7 #{12,3}:123#字典可变,不能当key 8 123:{ 9 "a":"A", 10 "b":"B", 11 "c":(11,22) 12 } 13 } 14 # print(d3[3])#不能用索引取值 15 print(d3["12"])#要用key取值 16 print(d3[11]) 17 print(d3[123]["c"][1])#深层取值 18 19 del d3[11]#可以按照key来删除键值对 20 print(d3) 21 22 del d3[123]["c"]#深层删除 23 print(d3)
结果
1 123 2 12 3 22 4 {'12': 123, True: 124, (12, 3): 12, 123: {'a': 'A', 'b': 'B', 'c': (11, 22)}} 5 {'12': 123, True: 124, (12, 3): 12, 123: {'a': 'A', 'b': 'B'}}
1 d3={ 2 11:12, 3 "12":123, 4 True:124, 5 (12,3):12, 6 123:{ 7 "a":"A", 8 "b":"B", 9 "c":(11,22) 10 } 11 } 12 for item in d3:#默认循环只有key输出 13 print(item)
结果
1 11 2 12 3 True 4 (12, 3) 5 123
用内置方法输出key和value
1 d3={ 2 11:12, 3 "12":123, 4 True:124, 5 (12,3):12, 6 123:{ 7 "a":"A", 8 "b":"B", 9 "c":(11,22) 10 } 11 } 12 print(d3.keys()) 13 print(d3.values()) 14 for item1 in d3.values(): 15 print(item1) 16 for item2 in d3.keys(): 17 print(item2)
结果
1 dict_keys([11, '12', True, (12, 3), 123]) 2 dict_values([12, 123, 124, 12, {'a': 'A', 'b': 'B', 'c': (11, 22)}]) 3 12 4 123 5 124 6 12 7 {'a': 'A', 'b': 'B', 'c': (11, 22)} 8 11 9 12 10 True 11 (12, 3) 12 123
同时输出key和value
1 d3={ 2 11:12, 3 "12":123, 4 True:124, 5 (12,3):12, 6 123:{ 7 "a":"A", 8 "b":"B", 9 "c":(11,22) 10 } 11 } 12 #用内置方法同时输出key和values 13 print(d3.items()) 14 for k,v in d3.items():# 15 print(k,v)
结果
1 dict_items([(11, 12), ('12', 123), (True, 124), ((12, 3), 12), (123, {'a': 'A', 'b': 'B', 'c': (11, 22)})]) 2 11 12 3 12 123 4 True 124 5 (12, 3) 12 6 123 {'a': 'A', 'b': 'B', 'c': (11, 22)}
修改字典
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对。如下实例:
1 dict1 = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} 2 dict1['Age'] = 8 # 更新 Age 3 dict1['School'] = "AWD" # 添加信息 4 5 print("dict1['Age']: ", dict1['Age']) 6 print("dict1['School']: ", dict1['School'])
结果
1 dict1['Age']: 8 2 dict1['School']: AWD
可以根据key的值是否为可修改类型修改
1 n1=["a",[1,2,{"k1":"v1","k2":["age","name"],"k3":(1,2,3)}]] 2 n1[1][2]["k2"].append("SD") 3 print(n1)
结果
1 ['a', [1, 2, {'k1': 'v1', 'k2': ['age', 'name', 'SD'], 'k3': (1, 2, 3)}]]
字典要掌握的操作:
1.按key存取值
2.长度len
3.成员运算in和not in
4.删除
5.keys()和values()以及items()方法
6.循环
7.update()和get()
1 d3={ 2 11:12, 3 "12":123, 4 True:124, 5 (12,3):12, 6 123:{ 7 "a":"A", 8 "b":"B", 9 "c":(11,22) 10 } 11 } 12 print(len(d3)) 13 print("a" in d3) 14 print("A" in d3)
结果
1 1 False 2 2 False
pop()
语法:d.pop(key[,default])
参数:key-----要删除的键值对的key
default-----没有这个key,旧返回默认值,必须添加,否则报错
返回值:返回被删除的值,没有就报错或返回默认值
d2={ "a":"A", "b":"B", "c":"C", } #pop可以根据key删除键值对,并且拿到这个删除的value,不存在时,可以根据第二个参数来自定义返回的值 n0=d2.pop("a")#参数不能为空,不存在的key时,报错 print(d2,n0) n1=d2.pop("f",100) print(d2,n1)
结果
1 {'b': 'B', 'c': 'C'} A 2 {'b': 'B', 'c': 'C'} 100
update()
语法:d1.update(d2)
参数:d2-----添加到d1字典里的字典
描述:没有返回值,把d2的key:value对更新到d1字典里,如果键值对有重复,用d2的覆盖掉d1的。
1 d4={ 2 "a":"A", 3 "b":"B", 4 "c":"C", 5 } 6 #update 7 d4.update({"k1":12,"a":"AA"})#更新,没有的key加上,存在的就更新value 8 print(d4) 9 #update另一种形式 10 d4.update(k2=123,k3=233,a="ABC")#这样写,key要符合变量名起名要求 11 print(d4)
结果
1 {'a': 'AA', 'b': 'B', 'c': 'C', 'k1': 12} 2 {'a': 'ABC', 'b': 'B', 'c': 'C', 'k1': 12, 'k2': 123, 'k3': 233}