【问题标题】:Python: How to create for loop that change dict value and append it to the list?Python:如何创建更改 dict 值的 for 循环并将其附加到列表中?
【发布时间】:2017-10-07 22:02:09
【问题描述】:

我尝试创建一个可以更改字典“标题”值的 for 循环。然后将新值附加到 b 列表中。因此 b 列表中将有 5 个具有不同“标题”值的字典。这是我的代码。

dictionary = {'title': 'hello', 'black': 'white', 'yellow':'green'}
b = []
for a in range(5):
    dictionary['title'] = str(a)
    b.append(dictionary)
print b

结果是:

[{'black': 'white', 'yellow': 'green', 'title': '4'}, {'black': 'white', 'yellow': 'green', 'title': '4'}, {'black': 'white', 'yellow': 'green', 'title': '4'}, {'black': 'white', 'yellow': 'green', 'title': '4'}, {'black': 'white', 'yellow': 'green', 'title': '4'}]

[0.136s完成]

为什么所有的“标题”都具有相同的值?如何为附加到列表的每个 dicts 获得不同的数字。谢谢

【问题讨论】:

  • 您只有一本字典,在您的列表中重复
  • 只需在循环中使用print b,您就会明白一切。

标签: python python-2.7 dictionary for-loop


【解决方案1】:

当您附加 dictionary 时,实际上是在附加它的引用,因为字典是可变的 - 这就是为什么所有条目实际上都指向字典的单个副本。使用它的复制方法来附加它的副本而不是原始的:

b.append(dictionary.copy())

【讨论】:

  • 非常感谢,不知道是可变的。
【解决方案2】:

你一直在附加同一个字典(注意它们不只是具有相同的值,而是元素设置为的 last 值);如果您希望它们不同,则必须为每个附加创建一个新字典。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-27
    • 2021-11-27
    • 1970-01-01
    • 2018-04-06
    • 2017-05-30
    • 2022-07-06
    • 2013-05-28
    • 2021-06-20
    相关资源
    最近更新 更多