使用collections.defaultdict中的密钥

Jon*_*han 15 python collections lambda defaultdict

collections.defaultdict是很棒的.特别是与lambda:

>>> import collections
>>> a = collections.defaultdict(lambda : [None,None])
>>> a['foo']
[None, None]
Run Code Online (Sandbox Code Playgroud)

有没有办法'foo'在lambda中使用给定的键(例如)?例如(不起作用):

>>> a = collections.defaultdict(lambda : [None]*key)
>>> a[1]
[None]
>>> a[2]
[None, None]
>>> a
defaultdict(<function <lambda> at 0x02984170>, {1: [None], 2: [None, None]})
Run Code Online (Sandbox Code Playgroud)

Sin*_*ion 31

您可能想要__missing__dict尝试访问dict中不存在的项时调用哪个; vanilla __missing__引发异常,但你可以在子类中做任何你喜欢的事情:

class A(dict):
    def __missing__(self, key):
        value = self[key] = [None] * key
        return value
Run Code Online (Sandbox Code Playgroud)