1
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のキーエラーとそれに対して何ができるのですか?

ありがとう。

4

2 に答える 2

2

AnOrderedDictもではありません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')]))])

順序付けられたdefaultdictの実装の可能性については、この回答を参照してください。

于 2013-03-07T23:11:00.350 に答える
1

これがdefaultdictの主な利点です。特に、Keyerrorをキャプチャし、defaultdictの引数として渡された関数を呼び出します。しかし、OrderedDictは別の目的のためのものです。

新しいdataStrctureが両方の機能を組み合わせる場合、有益です。また、userDict()を使用して、そのような機能を実装できる必要があります。

Pythonコレクションに関する私の記事を参照できます

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

お役に立てれば。

于 2015-11-27T07:03:14.013 に答える