字典 (dictionary) 的默認值


字典 (dictionary) 的默認值

摘錄自《利用 Python 進行數據分析》第三版 3.1.4.2

通常,如果想要獲得字典里對應鍵的值,但是我們先前並不確定這個鍵是否存在於字典中的話,代碼會這樣寫

if key in some_dict:
    value = some_dict[key]
else:
    value = default_value

但是,字典的 get 方法和 pop 方法可以添加一個默認值的參數,使得上述的代碼可以被簡化為

value = some_dict.get(key, default_key)

帶有默認值的 get 方法會在 key 參數不是字典的鍵時返回 None,而 pop 會拋出異常。

再有這樣一個場景,我們想將字詞組成的列表根據首字母分類為包含列表的字典。通常來講,我們會這樣組織代碼

words=['apple', 'bat', 'bar', 'atom', 'book']
by_letter = {}
for word in words:
    letter = word[0]
    if letter not in by_letter:
        by_letter[letter] = [word]
    else:
        by_letter[letter].append(word)

而使用字典的 setdefault 方法,如果鍵不存在於字典中,將會添加鍵並將值設為默認值。上面的代碼可以簡寫為

words=['apple', 'bat', 'bar', 'atom', 'book']
by_letter = {}
for word in words:
    letter = word[0]
    by_letter.setdefault(letter,[]).append(word)

除此之外,內建的 collections 模塊有一個 defaultdict 類,可以再將上述代碼簡化。

想要生成符合要求的字典,可以向 defaultdict 中傳入類型或能在各位置生成默認值的函數。

from collections import defaultdict
words=['apple', 'bat', 'bar', 'atom', 'book']
by_letter = defaultdict(list)
for word in words:
    by_letter[word[0]].append(word)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM