【发布时间】:2012-10-10 23:54:14
【问题描述】:
我最近正在生成包含数十万个键的庞大字典(因此通过查看它们来发现错误是不可行的)。它们在语法上是正确的,但在某个地方存在错误。它归结为“重复键”:
{'a':1, ..., 'a':2}
这段代码编译得很好,我不明白为什么a 键的值是2,正如我所期望的1。现在问题很明显了。
问题是我将来如何防止这种情况发生。我认为这在 python 中是不可能的。我用过
grep "'.*'[ ]*:" myfile.py | sort | uniq -c | grep -v 1
这不是防弹的。任何其他想法(在 python 中,这个 grep 只是为了说明我的尝试)?
编辑:我不想要重复的键,只需要发现这种情况并手动编辑数据
【问题讨论】:
-
您的数据中是否存在重复键的问题?这意味着您希望标记它们(或忽略重复项)。
-
最简单的方法是创建和使用 dict 的自定义子类(请参阅上面问题的链接),当您尝试添加重复键时,该子类会失败并显示信息性错误消息。如果这确实是您想要的,您甚至可以修改行为以忽略重复项。
-
现在我看到这实际上是一个骗子,链接的答案解决了我的问题。我想知道为什么这种行为(通知用户他正在复制键)在 Python 中不是默认的,我无法想象双键是可取的情况。我应该关闭/删除这个问题吗? (怎么做?)
-
内存中的
dict对象不能包含重复的键(具有相同哈希的相同对象)。如何将字典序列化为文件?