需要一个值为两个列表的 defaultdict

Need a defaultdict with values as two lists

在 Python 中,我想要

dict = defaultdict((list,list))

基本上,每个键我都想要两个列表!

通过上面的代码片段,我得到了错误 first argument must be callable。我怎样才能做到这一点?

这不是某种类型推断,你只是提供了一个生成默认值的函数。而 intlistdict 不带参数会生成 0[]{},这在 defaultdict 声明中经常被利用。 Python 没有内置列表对等的构造函数。所以它和

一样简单
di = defaultdict(lambda : ([1,2,3], ['a', 'cb']))

虽然 Python 允许列表的元组(对),但您可能会遇到一些问题,例如列表元组的散列。为了安全起见,您可以将默认设置为两个列表的列表。请注意,您已将其设置为特定列表,无论是否为空,而不是列表 type/constructor。它实际上是关于设置默认值而不是类型声明 - python 列表是无类型的。

from collections import defaultdict
l1 = []
l2 = ["another", "default", "list"]
di = defaultdict(lambda : [ l1, l2] )
print (di[3])

将创建空列表的函数作为参数提供给defaultdict

from collections import defaultdict

def pair_of_lists():
    return [[], []]

d = defaultdict(pair_of_lists)

d[1][0].append(3)
d[1][1].append(42)

print(d)
# defaultdict(<function pair_of_lists at 0x7f584a40b0d0>, {1: [[3], [42]]})