Python的字典中的get()方法,接受一個(gè)鍵和一個(gè)缺省值馍惹。如果鍵在字典中,get返回對應(yīng)的值,否則返回缺省值万矾,并不會修改字典或添加不存在的鍵值對悼吱。
<pre>
dic = dict(zip('abc',range(1,4)))
print dic
{'b': 2, 'a': 1, 'c': 3}
dic.get('z',100)
100
dic.get('a',100)
1
</pre>
以上的代碼中,因?yàn)椤畓’不是字典dic中的鍵良狈,所以返回缺省值后添,100.
‘a(chǎn)’是字典dic中的鍵,于是直接返回a對應(yīng)的鍵值薪丁。
利用get方法寫一個(gè)計(jì)算字符串中字母出現(xiàn)次數(shù)的函數(shù):
<pre>
txt = "Load up on guns Bring your friends"
def count_letter(str):
dic = {}
for letter in txt:
dic[letter] = 1 + dic.get(letter,0)
return dic
print(count_letter(txt))
</pre>
以上的代碼遇西,沒用if,直接用get()方法严嗜,一行就做了一個(gè)字典計(jì)數(shù)器
setdefault方法與get方法類似粱檀,也接受兩個(gè)參數(shù),一個(gè)鍵和一個(gè)缺省值漫玄。當(dāng)鍵在字典中時(shí)茄蚯,和get()方法沒有區(qū)別,返回對應(yīng)的鍵值睦优。但是當(dāng)鍵不在字典時(shí)渗常,setdefault()方法不僅會返回缺省值,也會在字典中添加該鍵值對汗盘。
<pre>
dic = dict(zip('abc',range(1,4)))
print dic
{'b': 2, 'a': 1, 'c': 3}
dic.setdefault('a',100)
100
print dic
{'b': 2, 'a': 1, 'c': 3}
dic.get('z',100)
1
print dic
{'b': 2, 'z': 100, 'c': 3, 'a': 1}
</pre>
以上的代碼中皱碘,由于‘a(chǎn)’在字典dic中,于是返回a對應(yīng)的鍵值衡未,dic不變尸执;
'z'不在字典dic中,于是返回缺省值缓醋,且我們在打印字典后發(fā)現(xiàn)('z',100)的鍵值對已經(jīng)添加到了字典中如失。
利用default方法寫一個(gè)反轉(zhuǎn)字典鍵與鍵值的函數(shù)
<pre>
def invert_dic(dictionary):
inv = {}
for key,val in dictionary.items():
inv.setdefault(val,[]).append(key)
return inv
dic = {'a':1,'b':2,'c':1}
print(invert_dic(dic))
</pre>
字典中可能還存在不同的鍵有著相同的鍵值,所以新的字典鍵值為一個(gè)列表送粱。