私は defaultdict が好きですが、リストの 2 タプルを自動有効化したいのですが、それが可能かどうかはわかりません。だから私が欲しいのは:
foo = defaultdict(???)
foo['key1'][0].append('value')
foo['key1'][1].append('other value')
これはdefaultdictで実行できますか?
私は defaultdict が好きですが、リストの 2 タプルを自動有効化したいのですが、それが可能かどうかはわかりません。だから私が欲しいのは:
foo = defaultdict(???)
foo['key1'][0].append('value')
foo['key1'][1].append('other value')
これはdefaultdictで実行できますか?
もちろん。defaultdict に、デフォルトにしたいものを返す関数を与える必要があります。このような 1 回限りの関数を作成する最も簡単な方法は、ラムダです。
foo = defaultdict(lambda: ([], []))
foo['key1'][0].append('value')
from collections import defaultdict
foo = defaultdict(lambda: defaultdict(list))
foo['key1'][0].append('value')
foo['key1'][1].append('other value')
print foo
出力
defaultdict(<function <lambda> at 0x7f7b65b4f848>, {'key1': defaultdict(<type 'list'>, {0: ['value'], 1: ['other value']})})
foo = defaultdict(lambda: ([], []))