当我在循环中更新字典的值时,它也会更改列表中已经存在的字典的值。
我已经在Python 3.7中尝试了以下代码
d = {"name": "v0"}
a = []
b = ["v1", "v2", "v3"]
for i in b:
d["name"] = i
a.append(d)
print(a)
我希望它会在循环中更改字典,并将每个表示形式添加到列表中。但是,它会将相同的值添加到列表中。
答案 0 :(得分:5)
每次创建一个新词典:
a = []
b = ["v1", "v2", "v3"]
for i in b:
a.append({"name": i})
print(a)
理解:
a = [{"name": i} for i in b]
如果您的词典太大了,您可以通过理解来从中重新构建一个词典:
a = [{"name": i if k == "name" else k:v for k,v in d.items() for i in b]