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输出:
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会出现键错误,我能做些什么?
谢谢。
发布于 2013-03-08 07:11:00
OrderedDict不是同时也是defaultdict。你必须这样做:
import collections
od = collections.OrderedDict()
od["i"] = collections.OrderedDict()
od["i"]["a"] = "111"
od["i"]["b"] = "222"
print od输出:
OrderedDict([('i', OrderedDict([('a', '111'), ('b', '222')]))])有关可能的有序默认字典实现,请参阅this answer。
发布于 2015-11-27 15:03:14
这是defaultdict的主要优点,特别是它将捕获Keyerror并调用作为参数传递给defaultdict的函数。但是OrderedDict有不同的用途。
如果新的dataStrcture将这两种功能结合在一起,那将是有益的。此外,使用userDict()必须能够实现这样的功能。
您可以参考我关于Python集合的文章
https://techietweak.wordpress.com/2015/11/11/python-collections/
希望这能有所帮助。
https://stackoverflow.com/questions/15283578
复制相似问题