在the docs所有給出的例子似乎是情況:其中在defaultdict
第一調用參數是一個「常數」功能,如int
,list
,或lambda: const
等。我不知道是否defaultdict
只是應該採取恆定功能作爲它的callabe參數,但如果不是,我希望callable依賴於我給出的缺少的鍵值。例如可以使用defaultdict接受取決於給定缺失鍵的可調用嗎?
toy = collections.defaultdict(lambda x: len(x), {'foo': 3})
toy['barr']
我期望是,每當我給一個丟失密鑰字符串,例如'barr'
,該容器可以創建'barr'
是關鍵和它的長度4
爲價值的新條目。但它不起作用。取而代之的是,它給了我下面的錯誤:
TypeError: <lambda>() missing 1 required positional argument: 'x'
我預計'barr'
是這個lambda
的說法在這裏,但它顯然並非如此。那麼會出現什麼問題呢?
'defaultdict'是爲默認值設計的,也就是說不依賴於它們的鍵的值。你最好使用一個常規的'dict'並自己動手 –