在Python中添加到set时的KeyError

时间:2016-08-31 07:23:15

标签: python-3.x

我在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集。

2 个答案:

答案 0 :(得分:2)

生成set的唯一KeyError操作在空集上为pop,在remove中为集合中不存在的元素addKeyError无法生成__hash__

我的第一个猜测是,此异常来自namegroup_oid的{​​{1}}方法。在调试器中检查这些对象可能会提供信息。还有来自__eq__方法的可能性。

答案 1 :(得分:0)

不知何故,Python解释器输出了错误的行号和附带的错误代码。错误是上面几行。我应该猜到......也许我在代码运行时更改了代码(How can the line numbers in my stack traces be wrong?),但我不认为我做了。无论如何,它不再发生了。

P.S。我没有立即重新运行并抓住它,因为脚本需要很长时间才能再次达到这一点。