字典方法
阿新 • • 發佈:2017-10-26
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 >>> print2、copy()方法(‘字典中元素的個數為:%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的值也被清空了。
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
字典方法