【问题标题】:Create a list of empty dictionaries创建空字典列表
【发布时间】:2013-04-05 13:30:19
【问题描述】:

我想创建一个包含空目录的可变长度列表。

n = 10 # size of list
foo = []
for _ in range(n)
    foo.append({})

你会用同样的方法吗,还是有类似的方法?

a = [{}*n]

【问题讨论】:

    标签: python list dictionary


    【解决方案1】:

    列出解析来拯救!

    foo = [{} for _ in range(n)]
    

    恐怕没有更短的符号。在 Python 2 中,您使用 xrange(n) 而不是 range(n) 以避免实现无用的列表。

    另一种选择,[{}] * n 创建一个长度为 n 的列表,其中只有 一个 字典,引用 n 次。在向字典添加键时,这会导致令人讨厌的意外。

    【讨论】:

    • 之前给出的答案对我来说应该没问题,因为我不关心引用,因为我在下一步将整个列表转换为 JSON。但我会接受你的回答,因为它更通用。
    • @MartinFlucka:使用[{}] * 3 不是一个好习惯,即使这只是用于JSON;你会发现自己忘记了那个小细节,当你稍后添加键和值时,你会遇到一个令人讨厌的惊喜。
    • @MartijnPieters 你是完全正确的,比抱歉更安全。
    • @j08lue:这就是我提到它的原因。但对于 Python 3,xrange() 已重命名为 range() 并进行了改进,我最初的示例假设 Python 3。
    • 刚刚收到[{}] * n 的rekt。这是否基本上意味着python中的预分配列表不是“pythonic”?在 python 中,列表通常是一个很大的痛苦,但我有一种感觉,我只是没有按预期使用它们......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    相关资源
    最近更新 更多