下面是我尝试做的一个例子
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'}, {}]
{}