如何创建一个值为固定列表或数组大小的defaultdict或字典
我想用 d = defaultdict(array.array) 或 d = defaultdict(list) 来创建一个字典,但我不知道怎么把这个数组或列表的元素数量固定为 N,N 是我希望这个数组或列表始终保持的大小。如果可以的话,我希望这个列表的 N 个元素都能预先设置为零。
2 个回答
2
你给 defaultdict
传递一个函数,这个函数会返回一个值,所以只需要给它一个能返回合适大小的列表或数组的函数就可以了。比如:
def make_list_of_10_zeroes():
return [0] * 10
d = defaultdict(make_list_of_10_zeroes)
因为我们这里用的函数只有一句话,就是一个 return
,所以我们可以用 一个 lambda 表达式 来代替:
d = defaultdict(lambda: [0] * 10)
9
defaultdict()
的参数是一个可以调用的东西,用来生成默认值。所以你只需要写一个函数,来创建你想要的初始值:
N = 8 # change N to whatever you want
def default_list():
return [0] * N
d = defaultdict(default_list)
或者你也可以用一个简短的写法,叫做lambda:
d = defaultdict(lambda: [0] * N)