Python:如何创建for循环来改变dict值并将其附加到列表中?

时间:2017-05-09 14:22:07

标签: python python-2.7 dictionary for-loop

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

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.136秒完成]

为什么所有'标题'都具有相同的价值?如何为列表中附加的每个dicts获取不同的数字。谢谢

2 个答案:

答案 0 :(得分:2)

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

b.append(dictionary.copy())

答案 1 :(得分:0)

您继续附加相同的字典(请注意,它们并非只是具有相同的值,而是该元素设置为的 last 值);如果你想要它们不同,你必须为每个附加创建一个新的字典。