我试图创建一个可以改变字典'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获取不同的数字。谢谢
答案 0 :(得分:2)
当你追加dictionary
时,你实际上附加了它的引用,因为字典是可变的 - 这就是为什么所有条目实际上指向字典的单个副本的原因。使用它的复制方法来附加它的副本而不是原始的:
b.append(dictionary.copy())
答案 1 :(得分:0)
您继续附加相同的字典(请注意,它们并非只是具有相同的值,而是该元素设置为的 last 值);如果你想要它们不同,你必须为每个附加创建一个新的字典。