【发布时间】:2020-04-13 03:27:33
【问题描述】:
我正在尝试使用下面的data 变量中显示的以下结构创建一个 python 字典。我有一个正在运行的 for 循环,它正在附加到一个列表中,但是如果您从返回输出中看到 dlist 中的所有值都是 {'data': 2} 我有点困惑,为什么我会得到所有相同的值字典中的条目。
# trying to make this dict structure in for loop
data = [{'data': 0},
{'data': 1},
{'data': 2}]
d={}
dlist=[]
for i in range(0,3):
d['data']=i
dlist.append(d)
print(d)
# PRINT OF D FROM LOOP
{'data': 0}
{'data': 1}
{'data': 2}
# STRANGLY DLIST ONLY HAS DATA 2 IN THE LIST
dlist
[{'data': 2}, {'data': 2}, {'data': 2}]
【问题讨论】:
-
这是一个非常常见的陷阱。将
d = {}放入for循环中,这样每次迭代都会创建一个新字典。按照现在的方式,您将一遍又一遍地向列表中添加相同的字典引用。 -
要真正简化它,您可以将一行更改为:
dlist.append({'data': i})
标签: python python-3.x