1. ホーム
  2. python

[解決済み] defaultdictをdictに変換する方法は?

2022-02-07 19:28:55

質問

を変換するにはどうすればよいですか? defaultdict

number_to_letter
defaultdict(<class 'list'>, {'2': ['a'], '3': ['b'], '1': ['b', 'a']})

を共通化することで dict ?

{'2': ['a'], '3': ['b'], '1': ['b', 'a']}

解決方法は?

を呼び出すだけです。 dict :

>>> a
defaultdict(<type 'list'>, {'1': ['b', 'a'], '3': ['b'], '2': ['a']})
>>> dict(a)
{'1': ['b', 'a'], '3': ['b'], '2': ['a']}

が、defaultdictの はディクショナリーです。

>>> isinstance(a, dict)
True

ただ、若干挙動が異なり、欠落しているキーにアクセスしようとすると -- 通常は KeyError -- は default_factory が代わりに呼び出されます。

>>> a.default_factory
<type 'list'>

というのが表示されます。 print a の前に、データ側の辞書が表示されます。

つまり、実際に新しいオブジェクトを作ることなく、よりディクショナリーな振る舞いを取り戻すためのもう一つのトリックは、リセットすることです。 default_factory :

>>> a.default_factory = None
>>> a[4].append(10)
Traceback (most recent call last):
  File "<ipython-input-6-0721ca19bee1>", line 1, in <module>
    a[4].append(10)
KeyError: 4

しかし、たいていの場合、これはトラブルに見合うものではありません。