使用setdefault而不是defaultdict

时间:2016-08-02 09:01:34

标签: python

我需要创建一个这样的结构:

D =  {i:{j:{k:0,l:1,m:2}},a:{b:{c:0,d:4}}}

所以这可以使用defaultdict完成:

 D = defaultdict(defaultdict(Counter))

我如何在这里使用setdefault?

编辑:

是否可以组合setdefault和defaultdict?

1 个答案:

答案 0 :(得分:0)

要使用setdefault()构建多级字典,您需要重复访问这样的键:

>>> from collections import Counter
>>> d = {}
>>> d.setdefault("i", {}).setdefault("j", Counter())
Counter()
>>> d
{'i': {'j': Counter()}}

要概括新键的用法,您可以使用函数:

def get_counter(d, i, j):
    return d.setdefault(i, {}).setdefault(j, Counter())