有人可以向我解释为什么在将字典附加到列表后清除字典会清除列表吗?我必须以某种方式提交它吗?



下面是我尝试做的一个例子

profData = []
currentDic = {}
currentDic['name'] = 'Mike'
currentDic['job'] = 'Bartender'
currentDic['company'] = 'Big Bar'
profData.append(currentDic)
currentDic.clear()
currentDic['name'] = 'John'
currentDic['job'] = 'Server'
currentDic['company'] = 'Red Robin'
profData.append(currentDic)
currentDic.clear()

print(profData)
print(currentDic)

出于某种原因,我得到了这个结果

[{}, {}]
{}

我想反复使用currentDic将字典插入到profData列表中。有什么想法吗?

正如@Selcuk在python中提到的那样,当您创建一个变量并赋值时,您的变量就是对该值的引用。如果将相同的值分配给另一个变量,则会为该值创建另一个引用,而不是将该值存储在新的内存地址并分配给该变量。

在程序中,创建一个字典并将其附加到列表中。列表中的词典将包含与上面创建的词典相同的引用。它类似于通过引用传递。

为了避免你面临的问题,你能做的就是把字典的副本传给列表。

import copy
profData = []
currentDic = {}
currentDic['name'] = 'Mike'
currentDic['job'] = 'Bartender'
currentDic['company'] = 'Big Bar'
profData.append(copy.copy(currentDic)) # Use copy.deepcopy if your dictionary is nested
currentDic.clear()
currentDic['name'] = 'John'
currentDic['job'] = 'Server'
currentDic['company'] = 'Red Robin'
profData.append(currentDic)
currentDic.clear()

print(profData)
print(currentDic)

输出:

[{'name': 'Mike', 'job': 'Bartender', 'company': 'Big Bar'}, {}]
{}

相关内容

  • 没有找到相关文章

最新更新