1. ホーム
  2. python

[解決済み] Pythonの'collection.defaultdict'の多段階化

2022-04-13 07:28:32

質問

SOの素晴らしい方々のおかげで、私は collections.defaultdict 特に可読性とスピードに優れています。特に可読性とスピードに優れています。

今度は、3レベルの辞書を実装したいと思います。 defaultdict で、最下段は int . これを行う適切な方法が見当たりません。以下は私の試みです。

from collections import defaultdict
d = defaultdict(defaultdict)
a = [("key1", {"a1":22, "a2":33}),
     ("key2", {"a1":32, "a2":55}),
     ("key3", {"a1":43, "a2":44})]
for i in a:
    d[i[0]] = i[1]

さて、これは動作しますが、望ましい動作である次のような動作はしません。

d["key4"]["a1"] + 1

ということをどこかで宣言しておくべきだったのではと思います。 defaultdictint が、どこで、どのようにするのかがわかりませんでした。

を使用している理由は defaultdict は、新しいキーごとに辞書を初期化する必要がないようにするためです。

もっとエレガントな提案はありませんか?

Pythoneersありがとうございます。

解決方法は?

使用する。

from collections import defaultdict
d = defaultdict(lambda: defaultdict(int))

これは、新しい defaultdict(int) で新しいキーがアクセスされるたびに d .