奇怪的错误:Python中的List.append擦除先例输入并克隆新的输入



好的,我已经在python中使用list很多次了,这是我第一次遇到这个问题: 在奇怪的地方附近,我有这个(简化(

list = []
dict = {}
things = {'1':'Am', '2':'I', '3':'Dumb?'}
[...]
for key,value in things.items():
if value:
dict[key]=value
print(dict)
list.append(dict)
print(list)

并得到这个结果:

{'1':'Am'}
[{'1':'Am'}]
{'2':'I'}
[{'2':'I'},{'2':'I'}]
{'3':'Dumb?'}
[{'3':'Dumb?'},{'3':'Dumb?'},{'3':'Dumb?'}]

欣欣,有人得到过这个吗?我,我卡住了,谢谢你:)

这不是一个错误。您只需将同一词典多次添加到列表中即可。因此,如果您操作该字典,您会看到列表的所有元素中的更改,因为这些元素都引用同一个字典。

您应该在每次迭代时创建一个字典,例如:

result = []
things = {'1':'Am', '2':'I', '3':'Dumb?'}
for key, value in things.items():
if value:
result.append({key: value})
print(list)

或者使用简单的列表理解:

result = [{k: v} for k, v in things.items() if v]

相关内容

最新更新