在Python中,我想要类似于这样的东西。
dict = defaultdict((list,list))
我希望对于每个键,都有两个列表。
在上面的代码片段中,我得到了错误“第一个参数必须是可调用的”。我该怎么做才能实现这个功能?
dict = defaultdict((list,list))
我希望对于每个键,都有两个列表。
在上面的代码片段中,我得到了错误“第一个参数必须是可调用的”。我该怎么做才能实现这个功能?
将创建空列表的函数作为参数传递给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]]})
它不是某种类型推断,你只需要提供一个生成默认值的函数。当没有参数时,int
、list
、dict
会生成 0
、[]
、{}
,这在 defaultdict 声明中经常被利用。Python 没有对列表等的一对构造函数的内置支持。所以这就像
di = defaultdict(lambda : ([1,2,3], ['a', 'cb']))
from collections import defaultdict
l1 = []
l2 = ["another", "default", "list"]
di = defaultdict(lambda : [ l1, l2] )
print (di[3])
dict = defaultdict(lambda : [[], []])
,但是这个不行:dict = defaultdict(lambda : [list, list])
。无法弄清楚为什么会这样。 - midilist
时,它不会被调用,所以你应该写成 []
或者 list()
。 - N Chauhan