如何创建一个值为固定列表或数组大小的defaultdict或字典

3 投票
2 回答
3225 浏览
提问于 2025-04-17 13:53

我想用 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)

撰写回答