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

时间:2019-05-20 08:37:45

标签: python python-3.x

当我在循环中更新字典的值时,它也会更改列表中已经存在的字典的值。

我已经在Python 3.7中尝试了以下代码

d = {"name": "v0"}
a = []
b = ["v1", "v2", "v3"]
for i in b:
    d["name"] = i
    a.append(d)
print(a)

我希望它会在循环中更改字典,并将每个表示形式添加到列表中。但是,它会将相同的值添加到列表中。

1 个答案:

答案 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]