Python:附加到dict列表

2024-09-28 16:18:50 发布

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

当我生成一个dict,并将其添加到一个列表中,然后生成具有类似结构的第二个dict并将其附加到该列表中时,得到的列表是第二个dict的两个副本,而不是同时包含第一个和第二个dict的列表。在

我的代码:

    i=1
    UnitTabs = {};   TextUnits=[]
    theseTextUnits = {}
    theseTextUnits['documentId'] = i
    theseTextUnits['xPosition'] = 200; theseTextUnits['yPosition'] = 200;  theseTextUnits['name'] = 'From date'
    TextUnits.append(theseTextUnits)
    theseTextUnits['xPosition'] = 250; theseTextUnits['yPosition'] = 250;   theseTextUnits['name'] = 'To date'
    TextUnits.append(theseTextUnits)
    print(TextUnits)

预期产量:

^{pr2}$

实际产量:

[{'xPosition': 250, 'yPosition': 250, 'name': 'To date', 'documentId': 1}, 
 {'xPosition': 250, 'yPosition': 250, 'name': 'To date', 'documentId': 1}]

Tags: to代码name列表date副本结构dict
3条回答

你在编辑同一本字典。Python从不隐式复制对象。如果使用copy方法,它将解决问题

TextUnits.append(theseTextUnits.copy())

发生这种情况是因为您正在修改相同的dict实例:

theseTextUnits['name'] = 'To date'

而且,这也会改变原始dict中的值。您需要做的是复制dict,然后修改所需的值。在

^{pr2}$

Python中的字典是可变对象。这意味着可以更改实际值(与返回新对象相反)

例如:

a={1:1}
b=a
b[1]=2
print(a)

{1:2}

相关问题 更多 >