如何迭代更新dict的值并将每个表示形式添加到列表中



当我在循环中更新字典的值时,它还更改列表中的字典的值。

我已经尝试了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]

最新更新