我在Python 3.4中运行我的程序,它崩溃了。堆栈跟踪:
netstat -abn
这是该行的代码。不用担心变量是什么,只是gammas是Traceback (most recent call last):
[...]
File [...], line 176, in manual_setup
gammas.add((name, group_oid))
KeyError: '5733455d-ba37-48c6-b550-8f53b719310c'
,你可以看到:
set
顺便说一句,gammas = set()
for group_oid, name, _ in self.tags:
gammas.add((name, group_oid))
和name
都是group_oid
,但即使它们是不可用的,我也会遇到不同的错误。
我不排除我有一些完全不同的可能性,但在我看到奇怪的原因之前我还没有想到,我想知道是否{{ 1}}可能会抛出str
。文件建议不。我对集合如何工作的了解说明不应该这样做。有没有人看到过这种情况?
我检查了set.add
是否被某种方式覆盖了。 PyCharm说它是内置的Python集。
答案 0 :(得分:2)
生成set
的唯一KeyError
操作在空集上为pop
,在remove
中为集合中不存在的元素add
。 KeyError
无法生成__hash__
。
我的第一个猜测是,此异常来自name
或group_oid
的{{1}}方法。在调试器中检查这些对象可能会提供信息。还有来自__eq__
方法的可能性。
答案 1 :(得分:0)
不知何故,Python解释器输出了错误的行号和附带的错误代码。错误是上面几行。我应该猜到......也许我在代码运行时更改了代码(How can the line numbers in my stack traces be wrong?),但我不认为我做了。无论如何,它不再发生了。
P.S。我没有立即重新运行并抓住它,因为脚本需要很长时间才能再次达到这一点。