字典方法
#像其他內(nèi)建類型一樣,字典也有方法,這些方法非常有用,不過可能不像使用列表或字符串一樣頻繁使用。 1、clear()方法 1 #clear()方法用于刪除字典內(nèi)的所有項。
2 #clear()方法的語法如下:
3 >>>dict.clear()
4 #此語法中dict代表指定字典,該方法不需要參數(shù)。該函數(shù)是一個原地操作(類似于list.sort)函數(shù),沒有任何返回值(返回值為None)。
5 #示例如下:
6 >>> student={'袁威':'666','肖濤':'222','陳安':'111','小明':'333'}
7 >>> print('字典中元素的個數(shù)為:%d個'%len(student))
8 字典中元素的個數(shù)為:4個
9 >>> student.clear()
10 >>> print('字典中元素的個數(shù)為:%d個:'%len(student))
11 字典中元素的個數(shù)為:0個:
12 #由輸出結(jié)果可知,字典調(diào)用clear方法后整個字典內(nèi)所有項都被刪除。
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最初對應(yīng)同一個字典。示例1中,通過將x關(guān)聯(lián)到一個新的空字典對他重新賦值,這對y沒有任何影響,還關(guān)聯(lián)到原先的字典。若想清空原始字典中所有元素,則必須使用clear方法,使用clear后,y的值也被清空了。 2、copy()方法 1 #copy()方法返回一個具有相同鍵/值對的新字典。這個方法是淺復(fù)制(shallow copy),因為值本身是相同的,而不是副本。
2 #copy()方法的語法如下:
3 >>>dict.copy()
4 #此語法中dict字典代表指定字典,該方法不需要參數(shù)。返回結(jié)果為一個字典的淺復(fù)制。
5 #該方法示例如下:
6 >>> student={'袁威':'123','肖濤':'456','陳安':'789','小智':'666'}
7 >>> st=student.copy()
8 >>> print('復(fù)制后得到的st為:',st)
9 復(fù)制后得到的st為: {'袁威': '123', '肖濤': '456', '陳安': '789', '小智': '666'}
10 #由輸出結(jié)果看到,使用copy方法可以將字典復(fù)制給另一個變量。
11 #我們可以通過下面的示例看看什么是淺復(fù)制。
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 #由輸出結(jié)果看到,替換副本的值時原始字典不受影響。如果修改了某個值(原地修改,不是替換),原始字段就會改變,因為同樣的值也在原字典中。以這種方式進行復(fù)制就是淺復(fù)制,而使用深復(fù)制(deep copy)可以避免這個問題。 3、fromkeys()方法 1 #fromkeys()方法用于創(chuàng)建一個新字典,以序列seq中的元素做字典的鍵,value為字典所有鍵對應(yīng)的初始值。
2 #fromkeys()方法語法如下:
3 >>>dict.fromkeys(seq[,value])
4 #此語法中dict代表指定字典;seq代表字典鍵值列表;value代表可選參數(shù),設(shè)置鍵序列(seq)的值。該方法返回結(jié)果為列表。
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 #由輸出結(jié)果看到,fromkeys方法使用給定的鍵建立新字典,每個鍵默認對應(yīng)的值為None。 4、get()方法 1 #get()方法返回指定鍵的值,如果值不在字典中,就會返回默認值。
2 #get()方法語法如下:
3 >>>dict.get(key,default=None)
4 #此語法中dict代表指定字典,key代表字典中要查找的鍵,default代表指定鍵的值不存在時就返回默認值。該方法返回結(jié)果為指定鍵的值,如果值不在字典中,就返回默認值None。
5 #示例如下:
6 >>> student={'袁威':'123','鄔玲苑':'456'}
7 >>> print('袁威的學(xué)號為:%s'%student.get('袁威'))
8 袁威的學(xué)號為:123
9 #由輸出結(jié)果看到,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 #由輸出結(jié)果看到,其他方法試圖訪問字典中不存在的項時會出錯,而使用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 #由輸出結(jié)果看到,輸出結(jié)果中用‘袁威’替代了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 #由輸出結(jié)果看到,已返回對應(yīng)的True和False。
11 #該方法是Python3中的方法,在Python2中有一個相同功能的方法--has_key方法。 6、items()方法 1 #items()方法以列表返回可遍歷的(鍵,值)元組數(shù)值。
2 #items()方法語法如下:
3 >>>dict.items()
4 #此語法中dict代表指定字典,該方法不需要參數(shù),返回結(jié)果為可遍歷的(鍵/值)元組數(shù)值。示例如下:
5 >>> 鏗鏘工作室={'袁威':'789','鄔玲苑':'456'}
6 >>> print('調(diào)用items方法的結(jié)果為:%s'%鏗鏘工作室.items())
7 調(diào)用items方法的結(jié)果為:dict_items([('袁威', '789'), ('鄔玲苑', '456')])
8 >>> print('調(diào)用items方法的結(jié)果為:',鏗鏘工作室.items())
9 調(diào)用items方法的結(jié)果為: dict_items([('袁威', '789'), ('鄔玲苑', '456')])
10 #由輸出結(jié)果看到,返回結(jié)果為一個元組數(shù)值。
11 #在Python2中提供了一個iteritems方法,該方法和items方法的作用大致相同,但是iteritems方法返回的是一個迭代器對象,而不是列表。 7、keys()方法 1 #keys()方法以列表返回一個字典所有鍵。
2 #keys()方法語法如下:
3 >>>dict.keys()
4 #此語法中dict代表指定字典,該方法不需要參數(shù)。返回結(jié)果為一個字典所有鍵。示例如下:
5 >>> 鏗鏘工作室={'肖濤':'123','袁威':'456','鄔玲苑':'789'}
6 >>> print('字典鏗鏘工作室所有鍵為:%s'%鏗鏘工作室.keys())
7 字典鏗鏘工作室所有鍵為:dict_keys(['肖濤', '袁威', '鄔玲苑'])
8 #由輸出結(jié)果看到,返回的是一個元組數(shù)值,數(shù)組包含了字典所有鍵。 8、setdefault()方法 1 #setdefalut()方法和get()方法類似,用于獲得與給定鍵相關(guān)聯(lián)的值。如果鍵不存在于字典中,就會添加鍵并將值設(shè)為默認值。
2 #setdefault()方法語法如下:
3 >>>dict.setdefault(key,default=None)
4 #此語法中dict代表指定字典,key代表查找的鍵值,default代表鍵不存在時設(shè)置的默認鍵值,該方法沒有任何返回值。示例如下:
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 #由輸出結(jié)果看到,當(dāng)鍵不存在時,setdefault方法返回默認值并更新字典;如果存在,就返回與其對應(yīng)的值,不改變字典。和get一樣,默認值可以選擇,如果不設(shè)定就使用None,如果設(shè)定就使用設(shè)定的值,例如:
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 #由輸出結(jié)果看到,小強沒有設(shè)置值,使用的是默認值,輸出鍵值為None;小張設(shè)置的默認值是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 #由輸出結(jié)果看到,提供的字典中的項被添加帶舊字典中,如果有相同的鍵就會被覆蓋。 10、values()方法 1 #values()方法以列表形式返回字典中所有值。與返回鍵的列表不同,返回的列表中可以包含重復(fù)的元素。
2 #values()方法語法如下:
3 >>>dict.values()
4 #此語法中dict代表指定字典,該方法不需要參數(shù),返回結(jié)果為字典中的所有值。示例如下:
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 #由輸出結(jié)果看到,返回列表中包含重復(fù)的元素
end
轉(zhuǎn)載于:https://www.cnblogs.com/DLHe/p/7737523.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)