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