【发布时间】:2017-08-02 21:48:37
【问题描述】:
我有一个功能如下:
def control(qstat):
gatnum = int(input("What number of control gates is this control qubit a part of?"))
global qstatnum
qstatnum = {}
qstatnum[gatnum] = []
qstatnum[gatnum].append(qstat) #seems to be a problem
return qstat
但是,有一个问题。假设我运行一次。列表中将有一项。然后,我第二次运行它,将一个与第二个不同的项目添加到列表中。当我打印qstatnum[gatnum] 时,该列表仅包含第二项,这使我相信.append() 语句在某种程度上被错误地写入并覆盖了之前添加到列表中的任何内容。
这是一个正确的诊断吗?为什么会这样?任何帮助,将不胜感激。谢谢!
【问题讨论】:
-
qstatnum = {}这应该在函数之外 -
还有
qstatnum[gatnum] = []是有问题的。我本来希望看到qstatnum.setdefault(gatnum, []).append(qstat)。 -
@DanD.,出于好奇,为什么这样更好,它到底有什么作用?我以前从未见过
.setdefault -
它说如果你有一个列表,然后得到它。否则,做一个空的
标签: python list python-3.x dictionary append