首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OrderedDict KeyError

OrderedDict KeyError
EN

Stack Overflow用户
提问于 2013-03-08 07:06:10
回答 2查看 4.2K关注 0票数 1
代码语言:javascript
复制
import collections

d = collections.defaultdict(dict)

d["i"]["a"] = "111"
d["i"]["b"] = "222"

print d

od = collections.OrderedDict()

od["i"]["a"] = "111"
od["i"]["b"] = "222"

print od

输出:

代码语言:javascript
复制
defaultdict(<type 'dict'>, {'i': {'a': '111', 'b': '222'}})
Traceback (most recent call last):
  File "app_main.py", line 51, in run_toplevel
  File "/Users/adam/Desktop/collections.py", line 12, in <module>
    od["i"]["a"] = "111"
KeyError: 'i'

为什么OrderedDict会出现键错误,我能做些什么?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-08 07:11:00

OrderedDict不是同时也是defaultdict。你必须这样做:

代码语言:javascript
复制
import collections
od = collections.OrderedDict()
od["i"] = collections.OrderedDict()
od["i"]["a"] = "111"
od["i"]["b"] = "222"
print od

输出:

代码语言:javascript
复制
OrderedDict([('i', OrderedDict([('a', '111'), ('b', '222')]))])

有关可能的有序默认字典实现,请参阅this answer

票数 2
EN

Stack Overflow用户

发布于 2015-11-27 15:03:14

这是defaultdict的主要优点,特别是它将捕获Keyerror并调用作为参数传递给defaultdict的函数。但是OrderedDict有不同的用途。

如果新的dataStrcture将这两种功能结合在一起,那将是有益的。此外,使用userDict()必须能够实现这样的功能。

您可以参考我关于Python集合的文章

https://techietweak.wordpress.com/2015/11/11/python-collections/

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15283578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档