Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python动态构造嵌套dict_Python - Fatal编程技术网

python动态构造嵌套dict

python动态构造嵌套dict,python,Python,我想在python中动态创建一个嵌套的dict。他说: 给定 在将tuple1添加到dict之后,我希望有dict像dict={'A':{'B':1}}}; 然后将tuple2添加到dict之后,dict={'A':{'B':1,'C':1}} 这就是我所尝试的,我发现下面的代码可以递归地创建嵌套dict。但我不知道如何动态添加节点,并将其值增加1 def incr_dict(dct, tpl): if len(tpl) == 0: dct = dct else:

我想在python中动态创建一个嵌套的dict。他说: 给定

在将
tuple1
添加到
dict
之后,我希望有
dict
dict={'A':{'B':1}}}
; 然后将
tuple2
添加到
dict之后,
dict={'A':{'B':1,'C':1}}
这就是我所尝试的,我发现下面的代码可以递归地创建嵌套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)

在下面代码的末尾,您将有一个dict
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

maplist似乎是一个集合,a如何成为主键?我想他指的是
{'a':'B'}
{'a':'C'}
用python完成任何事情的最好方法是编写代码,你试过吗?@o11c现在对我来说更清楚了,不是这样。我想你可能想要
集合。计数器
,但我只是感到困惑。
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