python动态构造嵌套的dict

时间:2014-10-02 00:30:09

标签: python

我想动态地在python中创建一个嵌套的dict。通过这样说: 给出

tuple1 = ('A','B'), 
tuple2 = ('A','C'), 
dict = {}

dict添加到dict = {'A': {'B':1}}后,我想tuple1dict; 将dict = {'A': {'B' : 1, 'C' : 1}}添加到tuple2后再dict 这就是我尝试过的,我发现以下代码以递归方式创建嵌套dict。但我不确定如何动态添加节点并将其值增加1。

def incr_dict(dct, tpl):
   if len(tpl) == 0:
      dct = dct
   else:
      dct = {tpl[-1]:dct}
      return incr_dict(dct, tpl[0:-1])
   return dct

dct = {}
tpl = ('a', 'b', 'c')

dct = incr_dict(dct, tpl)
print(dct)

1 个答案:

答案 0 :(得分:0)

在以下代码的末尾,您将获得一个d字典{'A': {'B': 1, 'C': 1}};请注意,最外层的循环并不是绝对必要的,但它在这个实例中为我节省了一些输入。

tuple1 = ('A','B')
tuple2 = ('A','C')
d = {}
for l in [list(tuple1), list(tuple2)]:
    for k in l:
        v = l.pop()
        if (d.has_key(k)):
            if (d[k].has_key(v)):
                d[k][v] = d[k][v]+1
            else:
                d[k][v] = 1
        else:
            d[k] = {}
            d[k][v] = 1