字典是(dict)是python中唯一的一個映射類型,他是以{}括起來的鍵值對組成,在字典中key是惟一的,在保存的時候,根據key來計算出一個內存地址,而後將key-value保存保存在這個地址中,這種算法被稱爲hash算法,因此在字典中存儲的key-value必須是可合適 hash的,(能夠改變的都是不可hash的,hash意味着不可變)這是爲了可以準確的計算內存地址而規定的.python
不可變的數據類型:int,str,tuple,bool算法
可變的數據類型:list,dict,setspa
value沒有要求,能夠保存任意類型的數據.code
1 dic={132:45,True:999,'ig':1,(1,2,3):'nje'} 2 print(dic) 3 # {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}
語法:{key1:value1,key2:value2......} blog
1 dic={132:45,True:999,'ig':1,(1,2,3):'nje'} 2 print(dic) 3 # {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}
1.1 dic['key']='value' 內存
1 dic={132:45,True:999,'ig':1,(1,2,3):'nje'} 2 print(dic) 3 # {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}
1.2
1 ⑴dic.setdefault('key') #往字典裏添加一個key,value默認爲None,若是key已經存在,不會起任何做用
2 ⑵dic.setdefault('key','value') #往字典裏添加一個key-value
3 dic = {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'} 4 dic.setdefault('李嘉誠') 5 print(dic) 6 #{132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje', '李嘉誠': None} #(1)
7
8 dic = {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'} 9 dic.setdefault('李嘉誠','房地產') 10 print(dic) 11 # {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje', '李嘉誠': '房地產'} #(2)
12
13 dic = {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'} 14 dic.setdefault(132,'房地產') 15 print(dic) 16 # {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'} #若是key已經存在,不會起任何做用
2.1 dic.pop('key')
dic.pop('key') dic = {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'} ret=dic.pop(132) #經過key刪除 返回被刪除的value
print(ret) #若是key不存在會報錯
print(dic) # 45
# {True: 999, 'ig': 1, (1, 2, 3): 'nje'}
2.2 del dic['key']
1 dic = {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'} 2 del dic[132] 3 print(dic) 4 # {True: 999, 'ig': 1, (1, 2, 3): 'nje'}
2.3 dic.popitem()
1 dic = {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'} 2 del dic[132] 3 print(dic) 4 # {True: 999, 'ig': 1, (1, 2, 3): 'nje'}
2.4 dic.clear()
1 dic = {132: 45, True: 999, 'ig': 1,132:'gu',(1, 2, 3): 'nje'} 2 dic.clear() 3 print(dic) 4 # {} #獲得的是一個空的字典
3.1
1 dic[key]=value 強制修改 2 dic = {132: 45, True: 999, 'ig': 1,132:'gu',(1, 2, 3): 'nje'} 3 dic[132]=789
4 print(dic) 5 # {132: 789, True: 999, 'ig': 1, (1, 2, 3): 'nje'}
3.2 dic1.update(dic)
1 dic = {132:45, '地方規劃局': 999, 'ig': 1,(1, 2, 3): 'nje'} 2 dic1={1:'a',2:'b',132:46} 3 dic.update(dic1) #把dic 1中的內容更新到dic中,若是key重複,則修改替換,若是key不存在,就新增.
4 print(dic) 5 # {132: 46, '地方規劃局': 999, 'ig': 1, (1, 2, 3): 'nje', 1: 'a', 2: 'b'}
4.1 dic.get(key)字符串
1 dic.get(key) 2 dic = {132:45, '地方規劃局': 999, 'ig': 1,(1, 2, 3): 'nje'} 3 print(dic.get(13,'好像虎')) #找不到key返回None,或者指定返回內容
4 #好像虎
4.2 dic[key]
1 dic = {132:45, '地方規劃局': 999, 'ig': 1,(1, 2, 3): 'nje'} 2 print(dic[132]) #45
3 print(dic[12]) #KeyError: 12 沒有這個鍵的時候查詢會報錯
4.3 for循環
1 dic = {132:45, '地方規劃局': 999, 'ig': 1,(1, 2, 3): 'nje'} 2 for i in dic: #循環默認是去字典中的鍵
3 print(i) 4 # 132
5 # 地方規劃局
6 # ig
7 # (1, 2, 3)
5.1 keys();values();items()get
1 dic = {132:45, '地方規劃局': 999, 'ig': 1,(1, 2, 3): 'nje'} 2 print(dic.keys()) # (高仿列表) 高仿列表暫時能夠當作真的列表用,也能夠迭代
3 print(dic.values()) # (高仿列表)
4 print(dic.items()) #也是高仿的列表,只不過裏面裝的是元組
5 # dict_keys([132, '地方規劃局', 'ig', (1, 2, 3)])
6 # dict_values([45, 999, 1, 'nje'])
7 # dict_items([(132, 45), ('地方規劃局', 999), ('ig', 1), ((1, 2, 3), 'nje')])
5.2 解構(解包)
1 a,b = '12' #將後邊解構打開按位置賦值給變量 支持 字符串 列表 元組
2 print(a) 3 print(b) 4 # 1
5 # 2
6
7 dic = {'易大師':'劍聖','劍豪':'託兒所','草叢倫':'大寶劍'} 8 for a,b in dic.items(): 9 print(a) 10 print(b) 11 # 易大師
12 # 劍聖
13 # 劍豪
14 # 託兒所
15 # 草叢倫
16 # 大寶劍
17
18 dic = {'易大師':'劍聖','劍豪':'託兒所','草叢倫':'大寶劍'} 19 for key,value in dic.items(): 20 print(key,value) 21 # 易大師 劍聖
22 # 劍豪 託兒所
23 # 草叢倫 大寶劍
1 dic = {'name':'汪峯','age':43,'wife':{'name':'國際章','age':39,'salary':100000},'baby':[{'name':'熊大','age':18},{'name':'熊二','age':15},]} 2
3 dic['baby'][0]['age'] = 19
4 print(dic)