Python3字典特點
1. 無序
2.鍵唯一 #不可變物件:整數、字串、元組;可變物件:列表、字典
鍵:字典中,字典值可以是pyton 任意一個物件,但鍵不行;鍵在字典中不能出現相同的鍵,如果相同,後一個值會被記住,如下例項:
dic = {`name`:`xp`,`name`:`26`,`job`:`IT`,`salary`:9000} print(dic) # 列印結果為:{`name`: `26`, `job`: `IT`, `salary`: 9000}
鍵必須不可變,可以是數字,字串或者元組,決不能用列表和字典。
字典的建立
字典的每個鍵值(key)對用冒號(:)分割,每個鍵值對之間用逗號(,)分割,整個字典包括在花括號({})中 ,格式如下所示:
1 dic = {`name`:`xp`,`age`:`26`,`job`:`IT`,`salary`:9000} 2 print(dic)
查 通過鍵去查詢
把相應的鍵放入到方括號中
1 dic = {`name`:`xp`,`age`:`26`,`job`:`IT`,`salary`:9000} 2 print(dic[`age`]) #列印結果為:26 3 print(list(dic.keys())) #以列表形式列印字典中的鍵;也可以不用加liest轉換 dic.keys() 4 #列印結果:[`name`, `age`, `job`, `salary`] 5 print(list(dic.values())) # 以列表形式列印字典中所有鍵對應的值 dic.values() 6 #列印結果為:[`xp`, `26`, `IT`, 9000] 7 print(list(dic.items())) #以列表的形式列印字典中所有的鍵值對 dic.items() 8 #列印結果為:[(`name`, `xp`), (`age`, `26`), (`job`, `IT`), (`salary`, 9000)]
上述程式中有一種情況下需要用 list 轉換,如下程式:
1 dic = {`name`:`xp`,`age`:`26`,`job`:`IT`,`salary`:9000} 2 dic1 = dic.keys() 3 print(dic1) #列印結果為:dict_keys([`name`, `age`, `job`, `salary`]) 4 #print(dic1[1]) 列印這句話會報錯 5 #報錯 TypeError: `dict_keys` object does not support indexing 是因為dic1列印出來的是物件不是列表,怎麼辦呢? 6 7 print(list(dic1)[1]) #列印結果為: age 8 #加上list 轉換,將dic1轉換為列表:[`name`, `age`, `job`, `salary`],然後取[1]元素。
字典中鍵不存在會是什麼樣呢?請看例項
1 dic = {`name`:`xp`,`job`:`IT`,`salary`:9000} 2 print(dic)# 列印結果為:{`name`: `xp`, `job`: `IT`, `salary`: 9000} 3 dic[`age`] = 18 4 print(dic)#列印結果為:{`name`: `xp`, `job`: `IT`, `salary`: 9000, `age`: 18} 5 #通過例子我們能看出字典中如果鍵不存在,將會新增對應的鍵值對。這也是新增字典的一種方法如果將dic[`age`] = 18 改為 dic[`age`] 那麼會報錯,大家可以試試。
字典中鍵存在,又會是什麼結果呢?請看例項
1 dic = {`name`:`xp`,`age`:26,`job`:`IT`,`salary`:9000} 2 3 ret = dic.setdefault(`age`,34) #setdefault() 函式 如果鍵存在,則返回對應的值, 4 print(ret) #列印結果為:26
改 修改字典
通過增加新的鍵值對,來修改或者刪除字典中已有的內容
1 dic = {`name`:`xp`,`age`:`26`,`job`:`IT`,`salary`:9000} 2 dic[`age`] = 20 #通過鍵來修改對應的值。 3 print(dic) 4 #列印結果為:{`name`: `xp`, `age`: 20, `job`: `IT`, `salary`: 9000} 5 6 dic[`like`] = `book` 7 print(dic) 8 #列印結果為:{`name`: `xp`, `age`: 20, `job`: `IT`, `salary`: 9000, `like`: `book`}
1 dic = {`name`:`xp`,`age`:`26`,`job`:`IT`,`salary`:9000} 2 dic1 = {`like`:`book`,`name`:`UUM`} 3 dic.update(dic1)# update() 通過函式進行修改,被修改的字典裡與要新增的鍵相同,則被修改的字典對應的鍵值被更新 4 print(dic) 5 #列印結果為:{`name`: `UUM`, `age`: `26`, `job`: `IT`, `salary`: 9000, `like`: `book`} 6 7 print(dic1) 8 #列印結果為:{`like`: `book`, `name`: `UUM`}
刪 刪除字典
1 #程式1 2 dic = {`name`:`xp`,`age`:`26`,`job`:`IT`,`salary`:9000} 3 del dic[`name`] #通過鍵來刪除字典中的鍵值對 4 print(dic) # 列印結果為:{`age`: `26`, `job`: `IT`, `salary`: 9000} 5 6 #程式2 7 dic = {`name`:`xp`,`age`:`26`,`job`:`IT`,`salary`:9000} 8 a=dic.pop(`age`) #刪除該鍵值對應的值,並返回該鍵值對應的值 9 print(dic) #列印結果為:{`name`: `xp`, `job`: `IT`, `salary`: 9000} 10 print(a) #列印結果為:26 11 12 #程式3 13 dic = {`name`:`xp`,`age`:`26`,`job`:`IT`,`salary`:9000} 14 b = dic.popitem() #隨機刪除字典中某組鍵對值,並以元組方式返回 15 print(b) # 列印結果為:(`salary`, 9000) 16 print(dic) # 列印結果為:{`name`: `xp`, `age`: `26`, `job`: `IT`} 17 18 #程式4 19 dic = {`name`:`xp`,`age`:`26`,`job`:`IT`,`salary`:9000} 20 dic.clear() #清空字典,但字典還存在,只不過是是一個空字典 21 print(dic) #列印結果為:{} 22 23 del dic #刪除字典,再列印的話會報錯 24 print(dic) #提示錯誤:NameError: name `dic` is not defined
字典巢狀
字典是支援無限極巢狀的。
1 cities = { 2 `河南省`:{ 3 `商丘市`:[`民權縣`,`睢縣`,`寧陵縣`], 4 `開封市`:[`蘭考縣`,`杞縣`,`通許縣`], 5 `洛陽市`:[`宜陽縣`,`洛川縣`,`伊川縣`] 6 }, 7 `北京市`:{ 8 `大興區`:[`西紅門`,`黃村`,`天宮院`], 9 `豐臺區`:[`郭公莊`,`科技園`,`總部基地`], 10 `朝陽區`:[`望京`,`將臺`,`太陽宮`], 11 `海淀區`:[`萬柳`,`三小`,`巴溝`] 12 }, 13 `河北省`:{ 14 `保定市`:[`涿州市`,`高碑店`,`保定`], 15 `廊坊`:[`永清`,`自然公園`,`安次區`], 16 `張家口`:[`懷安縣`,`萬全區`,`橋西區`] 17 } 18 } 19 print(cities[`河南省`][`洛陽市`][1]) 20 #列印結果為:洛川縣
由上面的例子可知,河南省、北京市、河北省是個大的字典,而河南省又是個字典,字典裡面又巢狀列表。
其他操作
dic.formkeys(引數,子引數) 其中引數可以是列表、元組。
1 dic = {} #定義一個空字典 2 dic1 = dic.fromkeys((`host1`,`host2`,`host3`),`date`)#.formkeys(引數,子引數)函式會生成一個字典 3 print(dic1) #一般初始化用 4 # 列印結果為:{`host1`: `date`, `host2`: `date`, `host3`: `date`}
dic = {} #定義一個空字典 dic1 = dic.fromkeys([`host1`,`host2`,`host3`],#會列印字典裡面有列表[`date1`,`date2`])#.formkeys(引數,子引數)函式會生成一個字典 print(dic1) #一般初始化用 # 列印結果為:{`host1`: [`date1`, `date2`], `host2`: [`date1`, `date2`], `host3`: [`date1`, `date2`]}
sorted()
dic = {`name`:`xp`,`age`:26,`job`:`IT`,`salary`:9000} print(sorted(dic)) # 對鍵進行排序 #列印結果為:[`age`, `job`, `name`, `salary`] print(sorted(dic.items())) # 對鍵值對進行排序 #列印結果為:[(`age`, 26), (`job`, `IT`), (`name`, `xp`), (`salary`, 9000)]
迴圈列印字典中的 values 和keys 的值
1 dic = {`name`:`xp`,`age`:26,`job`:`IT`,`salary`:9000} 2 for i in dic.values(): #迴圈列印字典中鍵對應的值(values) 3 print(i) 4 for i in dic.keys(): #迴圈列印鍵的值(keys) 5 print(i)
字典目前學到的就這些,以上是我學習過程中所總結的筆記,希望對大家有所幫助,覺得不錯可以關注我哦~_~