【发布时间】:2021-07-16 02:35:56
【问题描述】:
这是我正在尝试做的一个示例
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 列表中。有什么想法吗?
【问题讨论】:
-
您确实在重复使用
currentDic,而这不是您想要的。使用currentDic = {}而不是.clear()初始化一个新的。 -
这太奇怪了。我很惊讶即使将它附加到 profData 也会清除它。不过,您绝对是对的,只是尝试过,并且有效。谢谢!
-
没那么奇怪。
.clear()不会初始化新对象;它只会清除现有内容的内容。您基本上是将相同的对象(不是它的副本;对象本身)两次附加到列表中。有关类似的可变对象问题,请参阅 this question。 -
只是为了再次强调@Selcuk 所说的,整个程序中只有一个列表和一个字典。您对那本词典有三个引用,但是当您更改词典时,您会在任何地方看到它。
标签: python python-3.x dictionary