1. 程式人生 > >字典方法

字典方法

space align clear 建立 對他 iter 包含 lis file

#像其他內建類型一樣,字典也有方法,這些方法非常有用,不過可能不像使用列表或字符串一樣頻繁使用。 1、clear()方法
 1 #clear()方法用於刪除字典內的所有項。
 2 #clear()方法的語法如下:
 3 >>>dict.clear()
 4 #此語法中dict代表指定字典,該方法不需要參數。該函數是一個原地操作(類似於list.sort)函數,沒有任何返回值(返回值為None)。
 5 #示例如下:
 6 >>> student={袁威:666,肖濤:222,陳安:111,小明:333}
 7 >>> print
(字典中元素的個數為:%d個%len(student)) 8 字典中元素的個數為:4個 9 >>> student.clear() 10 >>> print(字典中元素的個數為:%d個:%len(student)) 11 字典中元素的個數為:0個: 12 #由輸出結果可知,字典調用clear方法後整個字典內所有項都被刪除。 13 #再看下面兩個示例: 14 示例1: 15 >>> x={} 16 >>> y=x 17 >>> x[key]=value 18 >>> y 19
{key: value} 20 >>> x={} 21 >>> y 22 {key: value} 23 示例2: 24 >>> x={} 25 >>> y=x 26 >>> x[key]=value 27 >>> y 28 {key: value} 29 >>> x.clear() 30 >>> y 31 {} 32 #由兩個示例中,x和y最初對應同一個字典。示例1中,通過將x關聯到一個新的空字典對他重新賦值,這對y沒有任何影響,還關聯到原先的字典。若想清空原始字典中所有元素,則必須使用clear方法,使用clear後,y的值也被清空了。
2、copy()方法
 1 #copy()方法返回一個具有相同鍵/值對的新字典。這個方法是淺復制(shallow copy),因為值本身是相同的,而不是副本。
 2 #copy()方法的語法如下:
 3 >>>dict.copy()
 4 #此語法中dict字典代表指定字典,該方法不需要參數。返回結果為一個字典的淺復制。
 5 #該方法示例如下:
 6 >>> student={袁威:123,肖濤:456,陳安:789,小智:666}
 7 >>> st=student.copy()
 8 >>> print(復制後得到的st為:,st)
 9 復制後得到的st為: {袁威: 123, 肖濤: 456, 陳安: 789, 小智: 666}
10 #由輸出結果看到,使用copy方法可以將字典復制給另一個變量。
11 #我們可以通過下面的示例看看什麽是淺復制。
12 >>> student={小智:1002,info:[小張,1006,man]}
13 >>> st=student.copy()
14 >>> st[小智]=1005
15 >>> print(更改copy後的st為:,st)
16 更改copy後的st為: {小智: 1005, info: [小張, 1006, man]}
17 >>> print(原字符串為:,student)
18 原字符串為: {小智: 1002, info: [小張, 1006, man]}
19 >>> st[info].remove(man)
20 >>> print(刪除後的st為:,st)
21 刪除後的st為: {小智: 1005, info: [小張, 1006]}
22 >>> print(刪除後的student為:,student)
23 刪除後的student為: {小智: 1002, info: [小張, 1006]}
24 #由輸出結果看到,替換副本的值時原始字典不受影響。如果修改了某個值(原地修改,不是替換),原始字段就會改變,因為同樣的值也在原字典中。以這種方式進行復制就是淺復制,而使用深復制(deep copy)可以避免這個問題。
3、fromkeys()方法
 1 #fromkeys()方法用於創建一個新字典,以序列seq中的元素做字典的鍵,value為字典所有鍵對應的初始值。
 2 #fromkeys()方法語法如下:
 3 >>>dict.fromkeys(seq[,value])
 4 #此語法中dict代表指定字典;seq代表字典鍵值列表;value代表可選參數,設置鍵序列(seq)的值。該方法返回結果為列表。
 5 #示例如下:
 6 >>> target=(姓名,性別,愛好)
 7 >>> info=dict.fromkeys(target)
 8 >>> print(info字典信息為:,info)
 9 info字典信息為: {姓名: None, 性別: None, 愛好: None}
10 >>> info=dict.fromkeys(target,10)
11 >>> print(新的info字典信息為:,info)
12 新的info字典信息為: {姓名: 10, 性別: 10, 愛好: 10}
13 #由輸出結果看到,fromkeys方法使用給定的鍵建立新字典,每個鍵默認對應的值為None。
4、get()方法
 1 #get()方法返回指定鍵的值,如果值不在字典中,就會返回默認值。
 2 #get()方法語法如下:
 3 >>>dict.get(key,default=None)
 4 #此語法中dict代表指定字典,key代表字典中要查找的鍵,default代表指定鍵的值不存在時就返回默認值。該方法返回結果為指定鍵的值,如果值不在字典中,就返回默認值None。
 5 #示例如下:
 6 >>> student={袁威:123,鄔玲苑:456}
 7 >>> print(袁威的學號為:%s%student.get(袁威))
 8 袁威的學號為:123
 9 #由輸出結果看到,get方法使用比較簡單,再如示例:
10 >>> st={}
11 >>> print(st[name])
12 Traceback (most recent call last):
13   File "<pyshell#8>", line 1, in <module>
14     print(st[name])
15 KeyError: name
16 >>> print(st.get(name))
17 None
18 >>> print(name的值為:%s%st.get(name))
19 name的值為:None
20 #由輸出結果看到,其他方法試圖訪問字典中不存在的項時會出錯,而使用get方法就不會。使用get方法訪問一個不存在的鍵時,返回None。這裏還可以自定義默認值,用於替換None,示例:
21 >>> st={}
22 >>> print(name的值為:%s%st.get(name,袁威))
23 Traceback (most recent call last):
24   File "<pyshell#12>", line 1, in <module>
25     print(name的值為:%s%st.get(name,袁威))
26 NameError: name 袁威 is not defined
27 >>> print(name的值為:%s%st.get(name,袁威))
28 name的值為:袁威
29 #由輸出結果看到,輸出結果中用‘袁威’替代了None。
5、key in dict方法
 1 #Python字典in操作符用於判斷鍵是否存在於字典中,如果鍵在字典dict中就返回True,否則就返回False。
 2 #該方法語法如下:
 3 >>>key in dict
 4 #此語法中dict代表指定字典,key代表要在字典中查找的鍵。如果鍵在字典裏就返回True,否則就返回False。示例如下:
 5 >>> student={袁威:123,鄔玲苑:456}
 6 >>> print(袁威在字典裏:,袁威in student)
 7 袁威在字典裏: True
 8 >>> print(黃金萍在字典裏:,黃金萍in student)
 9 黃金萍在字典裏: False
10 #由輸出結果看到,已返回對應的True和False。
11 #該方法是Python3中的方法,在Python2中有一個相同功能的方法--has_key方法。
6、items()方法
 1 #items()方法以列表返回可遍歷的(鍵,值)元組數值。
 2 #items()方法語法如下:
 3 >>>dict.items()
 4 #此語法中dict代表指定字典,該方法不需要參數,返回結果為可遍歷的(鍵/值)元組數值。示例如下:
 5 >>> 鏗鏘工作室={袁威:789,鄔玲苑:456}
 6 >>> print(調用items方法的結果為:%s%鏗鏘工作室.items())
 7 調用items方法的結果為:dict_items([(袁威, 789), (鄔玲苑, 456)])
 8 >>> print(調用items方法的結果為:,鏗鏘工作室.items())
 9 調用items方法的結果為: dict_items([(袁威, 789), (鄔玲苑, 456)])
10 #由輸出結果看到,返回結果為一個元組數值。
11 #在Python2中提供了一個iteritems方法,該方法和items方法的作用大致相同,但是iteritems方法返回的是一個叠代器對象,而不是列表。
7、keys()方法
1 #keys()方法以列表返回一個字典所有鍵。
2 #keys()方法語法如下:
3 >>>dict.keys()
4 #此語法中dict代表指定字典,該方法不需要參數。返回結果為一個字典所有鍵。示例如下:
5 >>> 鏗鏘工作室={肖濤:123,袁威:456,鄔玲苑:789}
6 >>> print(字典鏗鏘工作室所有鍵為:%s%鏗鏘工作室.keys())
7 字典鏗鏘工作室所有鍵為:dict_keys([肖濤, 袁威, 鄔玲苑])
8 #由輸出結果看到,返回的是一個元組數值,數組包含了字典所有鍵。
8、setdefault()方法
 1 #setdefalut()方法和get()方法類似,用於獲得與給定鍵相關聯的值。如果鍵不存在於字典中,就會添加鍵並將值設為默認值。
 2 #setdefault()方法語法如下:
 3 >>>dict.setdefault(key,default=None)
 4 #此語法中dict代表指定字典,key代表查找的鍵值,default代表鍵不存在時設置的默認鍵值,該方法沒有任何返回值。示例如下:
 5 >>> 鏗鏘工作室={肖濤:123,袁威:456,鄔玲苑:789}
 6 >>> print(字典鏗鏘工作室所有鍵為:%s%鏗鏘工作室.keys())
 7 字典鏗鏘工作室所有鍵為:dict_keys([肖濤, 袁威, 鄔玲苑])
 8 >>> 鏗鏘工作室={袁威:123,鄔玲苑:456}
 9 >>> print(肖濤的鍵值為:%s%鏗鏘工作室.setdefault(肖濤))
10 肖濤的鍵值為:None
11 >>> print(鄔玲苑的鍵值為:%s%鏗鏘工作室.setdefault(鄔玲苑))
12 鄔玲苑的鍵值為:456
13 >>> print(鏗鏘工作室的新值為:%s%鏗鏘工作室)
14 鏗鏘工作室的新值為:{袁威: 123, 鄔玲苑: 456, 肖濤: None}
15 #由輸出結果看到,當鍵不存在時,setdefault方法返回默認值並更新字典;如果存在,就返回與其對應的值,不改變字典。和get一樣,默認值可以選擇,如果不設定就使用None,如果設定就使用設定的值,例如:
16 >>> 鏗鏘工作室={袁威:123,鄔玲苑:456}
17 >>> print(小強的鍵值為:%s%鏗鏘工作室.setdefault(小強))
18 小強的鍵值為:None
19 >>> print(小張的鍵值為:%s%鏗鏘工作室.setdefault(小張,1006))
20 小張的鍵值為:1006
21 >>> print(鏗鏘工作室字典新值為:%s%鏗鏘工作室)
22 鏗鏘工作室字典新值為:{袁威: 123, 鄔玲苑: 456, 小強: None, 小張: 1006}
23 #由輸出結果看到,小強沒有設置值,使用的是默認值,輸出鍵值為None;小張設置的默認值是1006,輸出鍵值為1006.
9、update()方法
 1 #update()方法用於把字典dict2的鍵/值對更新到dict裏
 2 #update()方法語法如下
 3 >>>dict.update(dict2)
 4 #此語法中dict代表指定字典,dict2代表添加到指定字典dict裏的字典,該方法沒有任何返回值。
 5 #示例如下:
 6 >>> student1={小明:123,小智:456}
 7 >>> student2={小強:789}
 8 >>> print(原字典為:,student)
 9 原字典為: {袁威: 123, 鄔玲苑: 456}
10 >>> student.update(student2)
11 >>> print(新字典為:%s%student)
12 新字典為:{袁威: 123, 鄔玲苑: 456, 小強: 789}
13 >>> student3={小強:1005}
14 >>> student.update(student3)   #相同項覆蓋
15 >>> print(新字典為:%s%student)
16 新字典為:{袁威: 123, 鄔玲苑: 456, 小強: 1005}
17 #由輸出結果看到,提供的字典中的項被添加帶舊字典中,如果有相同的鍵就會被覆蓋。
10、values()方法
 1 #values()方法以列表形式返回字典中所有值。與返回鍵的列表不同,返回的列表中可以包含重復的元素。
 2 #values()方法語法如下:
 3 >>>dict.values()
 4 #此語法中dict代表指定字典,該方法不需要參數,返回結果為字典中的所有值。示例如下:
 5 >>> 鏗鏘工作室={小明:1001,小智:1002,小強:1001}
 6 >>> print(鏗鏘工作室所有值為:%s%list(student.values()))
 7 鏗鏘工作室所有值為:[1001, 1002, 1003]
 8 >>> print(鏗鏘工作室所有值為:%s%student.values())
 9 鏗鏘工作室所有值為:dict_values([1001, 1002, 1003])
10 #由輸出結果看到,返回列表中包含重復的元素

end

字典方法