Python的字典中的get()方法,接受一个键和一个缺省值。如果键在字典中,get返回对应的值,否则返回缺省值,并不会修改字典或添加不存在的键值对。
<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>
以上的代码中,因为‘z’不是字典dic中的键,所以返回缺省值,100.
‘a’是字典dic中的键,于是直接返回a对应的键值。
利用get方法写一个计算字符串中字母出现次数的函数:
<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()方法,一行就做了一个字典计数器
setdefault方法与get方法类似,也接受两个参数,一个键和一个缺省值。当键在字典中时,和get()方法没有区别,返回对应的键值。但是当键不在字典时,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’在字典dic中,于是返回a对应的键值,dic不变;
'z'不在字典dic中,于是返回缺省值,且我们在打印字典后发现('z',100)的键值对已经添加到了字典中。
利用default方法写一个反转字典键与键值的函数
<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>
字典中可能还存在不同的键有着相同的键值,所以新的字典键值为一个列表。