What's the best way to initialize a dict of dicts in Python?
autovivification, python
Solution
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
Testing:
a = AutoVivification()
a[1][2][3] = 4
a[1][3][3] = 5
a[1][2]['test'] = 6
print a
Output:
{1: {2: {'test': 6, 3: 4}, 3: {3: 5}}}
Problem
A lot of times in Perl, I'll do something like this: ``` $myhash{foo}{bar}{baz} = 1 ``` How would I translate this to Python? So far I have: ``` if not 'foo' in myhash: myhash['foo'] = {} if not 'bar' in myhash['foo']: myhash['foo']['bar'] = {} myhash['foo']['bar']['baz'] = 1 ``` Is there a better way?