当我生成一个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}]
你在编辑同一本字典。Python从不隐式复制对象。如果使用
copy
方法,它将解决问题TextUnits.append(theseTextUnits.copy())
发生这种情况是因为您正在修改相同的dict实例:
而且,这也会改变原始dict中的值。您需要做的是复制dict,然后修改所需的值。在
^{pr2}$Python中的字典是可变对象。这意味着可以更改实际值(与返回新对象相反)
例如:
相关问题 更多 >
编程相关推荐