1. ホーム
  2. python

[解決済み] Pythonでdictのdictを初期化するのに最適な方法は何ですか?重複] [重複] [重複

2023-04-28 05:04:10

質問

Perlでよくやるのは、こんな感じです。

$myhash{foo}{bar}{baz} = 1

これをPythonに置き換えるにはどうしたらいいでしょうか?今のところ私は

if not 'foo' in myhash:
    myhash['foo'] = {}
if not 'bar' in myhash['foo']:
    myhash['foo']['bar'] = {}
myhash['foo']['bar']['baz'] = 1

もっと良い方法はないのでしょうか?

どのように解決するのですか?

class AutoVivification(dict):
    """Implementation of perl's autovivification feature."""
    def __getitem__(self, item):
        try:
            return dict.__getitem__(self, item)
        except KeyError:
            value = self[item] = type(self)()
            return value

テスト中です。

a = AutoVivification()

a[1][2][3] = 4
a[1][3][3] = 5
a[1][2]['test'] = 6

print a

出力します。

{1: {2: {'test': 6, 3: 4}, 3: {3: 5}}}