Python 會dict.pop(key[, default])忽略設定的默認值,collections.defaultdict(default_factory)如以下代碼片段所示:
from collections import defaultdict
d = defaultdict(lambda: 1)
d['a']
d['b'] = 2
print(d.pop('a')) # 1
print(d.pop('b')) # 2
print(d.pop('c', 3)) # 3
d.pop('e') # KeyError: 'e'
d是一個defaultdict(lambda: 1)。d.pop('e')導致KeyError. 這是故意的嗎?不應該d.pop('e')回傳1,因為這是由 ? 設定的默認值defaultdict?
uj5u.com熱心網友回復:
您鏈接的檔案指出:
它覆寫了一種方法[
__missing__()] 并添加了一個可寫實體變數[default_factory]。其余功能與 dict 類相同,此處未記錄。
這在__missing__()方法本身下進一步指定,由__getitem__()dict 呼叫:
請注意,除 .
__missing__()之外的任何操作都不需要__getitem__()。這意味著get()它將像普通字典None一樣作為默認值回傳,而不是使用 default_factory。
所以不僅pop()會有相同的行為,get()也會有。獲得默認值的唯一方法是直接[key]在您的 dict 上使用。如果我們仔細想想,這絕對是對 dict 最相關的呼叫。
總之,defaultDict 將dict['inexistent-key']回傳您的默認值,其他任何東西都應該具有與普通 dict 相同的行為。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/492323.html
