Python的字典是否有預設值?
衆所周知,在Python中如果通路字典中不存在的鍵,會引發KeyError異常(JavaScript中如果對象中不存在某個屬性,則傳回undefined)。但是有時候,字典中的每個鍵都存在預設值是非常友善的。例如下面的例子:
strings = ('puppy', 'kitten', 'puppy', 'puppy', 'weasel', 'puppy', 'kitten', 'puppy') counts = {}
for kw in strings:
counts[kw] += 1
該例子統計strings中某個單詞出現的次數,并在counts字典中作記錄。單詞每出現一次,在counts相對應的鍵所存的值數字加1。但是事實上,運作這段代碼會抛出KeyError異常,出現的時機是每個單詞第一次統計的時候,因為Python的dict中不存在預設值的說法。
為了解決上述問題,我們可以先加個判斷語句,若key不存在,則其value值設為1:
strings = ('puppy', 'kitten', 'puppy', 'puppy',
'weasel', 'puppy', 'kitten', 'puppy')
counts = {}
for kw in strings:
if kw not in counts:
counts[kw] = 1
else:
counts[kw] += 1
同樣也可以利用setdefault的方法來設定預設值:
'''
學習中遇到問題沒人解答?小編建立了一個Python學習交流QQ群:531509025
尋找有志同道合的小夥伴,互幫互助,群裡還有不錯的視訊學習教程和PDF電子書!
'''
strings = ('puppy', 'kitten', 'puppy', 'puppy',
'weasel', 'puppy', 'kitten', 'puppy')
counts = {}
for kw in strings:
counts.setdefault(kw, 0)
counts[kw] += 1
還有一種方法來對字典進行初始化操作——defaultdict
defaultdict類就好像是一個dict,但是它是使用一個類型來初始化的:
>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> d['k1']
[]
>>> d
defaultdict(<class 'list'>, {'k1': []})
>>> d['k2']='kobe'
>>> d
defaultdict(<class 'list'>, {'k1': [], 'k2': 'kobe'})
>>> d['k3'].append('lebron')
>>> d
defaultdict(<class 'list'>, {'k1': [], 'k2': 'kobe', 'k3': ['lebron']})
結尾給大家推薦一個非常好的學習教程,希望對你學習Python有幫助!
Python基礎入門教程推薦:更多Python視訊教程-關注B站:Python學習者
【Python教程】全網最容易聽懂的1000集python系統學習教程(答疑在最後四期,滿滿幹貨)
Python爬蟲案例教程推薦:更多Python視訊教程-關注B站:Python學習者