奇怪的错误:Python中的List.append删除以前的输入并克隆新的输入

2024-04-20 13:14:03 发布

您现在位置:Python中文网/ 问答频道 /正文

好的,我已经在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?'}]

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


Tags: keyinforifvalue地方itemsam
1条回答
网友
1楼 · 发布于 2024-04-20 13:14:03

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

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

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]

相关问题 更多 >