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}