需要一个值为两个列表的 defaultdict
Need a defaultdict with values as two lists
在 Python 中,我想要
dict = defaultdict((list,list))
基本上,每个键我都想要两个列表!
通过上面的代码片段,我得到了错误 first argument must be callable。我怎样才能做到这一点?
这不是某种类型推断,你只是提供了一个生成默认值的函数。而 int
、list
、dict
不带参数会生成 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]]})
在 Python 中,我想要
dict = defaultdict((list,list))
基本上,每个键我都想要两个列表!
通过上面的代码片段,我得到了错误 first argument must be callable。我怎样才能做到这一点?
这不是某种类型推断,你只是提供了一个生成默认值的函数。而 int
、list
、dict
不带参数会生成 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]]})