Python 在列表中添加后立即删除键
我这里有一个示例代码,追加字典并在追加之后立即删除它的键Python 在列表中添加后立即删除键,python,Python,我这里有一个示例代码,追加字典并在追加之后立即删除它的键 def test(): x = [] sample_dict = dict( x=2, b=1, ) x.append(sample_dict) del sample_dict['x'] print(x) test() # result [{'b': 1}] 唯一的问题是,即使我在删除字典的键之前追加字典,它仍然会删除键,即使我在追加字典之后立即
def test():
x = []
sample_dict = dict(
x=2,
b=1,
)
x.append(sample_dict)
del sample_dict['x']
print(x)
test()
# result [{'b': 1}]
唯一的问题是,即使我在删除字典的键之前追加字典,它仍然会删除键,即使我在追加字典之后立即将其删除
我想知道如何在删除字典的键之前先添加字典。提前感谢据我所知,将
x.append(sample\u dict)
替换为x.append(sample\u dict.copy())
应该可以解决您的问题。这是处理Python对象时面临的一个基本问题。当复制引用而不是值时,相等或附加Python对象将链接它们
因此,您的代码x.append(sample_dict)
实际上是直接引用sample_dict
,而不是复制它的数据。因此,对sample_dict
的任何更改也将反映在列表中,因为列表只是保存对同一dict的引用
要解决这个问题,只需像这样立即复制示例
x.append(dict(sample_dict))
现在,在运行修改后的代码时:
>>> def test():
x = []
sample_dict = dict(
x=2,
b=1,
)
x.append(dict(sample_dict))
del sample_dict['x']
print(x)
>>> test()
[{'x': 2, 'b': 1}]
你到底想干什么?这对我来说毫无意义。如果从dict中删除一个键,则也会从引用该dict的列表中删除该键。如果希望包含dict的列表不受del
操作的影响,您需要先制作一份dict的副本。@YeongJongLim我试图在字典中附加属性,但我想要的是在将属性x附加到列表后立即删除它。您期望的输出是什么?@初学者此解决方案对您有效吗?这不是我想要的结果。它应该可以正常工作。问题在于,列表内外的dict实际上是相同的,但如果创建副本,情况会发生变化。