2017-05-06 129 views
-2

我想增加字典字典中的值,有一个主要字典'a',它有两个单独的字典:'be'和'ce'。我想增加特定关键字的值,如“DIST”和“BEC”变量确定,但我不能达到未成年人的字典中的一个关键:Python词典中的两个字典,增加特定键值

import collections 
from collections import defaultdict 

a={} 
be = {} 
ce = {} 

for z in range(1,11): 
    be["b_{0}".format(z)] = 0 
    be = collections.OrderedDict(sorted(be.items())) 

for c in range(1,11): 
    for b in range(1,11): 
     ce["c_{0}_{1}".format(c,b)]= 0 
ce = collections.OrderedDict(sorted(ce.items())) 

for x in range(1,10): 
    a["a_{0}".format(x)] = be,ce 
    a = collections.OrderedDict(sorted(a.items())) 

dist = 3 
bec = 10 
a["a_"+str(dist)]["b_"+str(bec)] += 1 

我试图打印“一[” A_” + str(dist)] [“b _”+ str(bec)]“但它不起作用,它只在我只打印”a [“a _”+ str(dist)]时起作用“

+0

当你打印出'a [“a_”+ str(dist)]'时,你可以看到它是一个元组。这就是'be'所产生的逗号。因此,错误消息'元组索引必须是整数或切片,而不是str'。你想要什么价值? –

+0

我想要“a_3”的键“b_10”的整数值,这样我就可以将它的值从0增加到更多,每次我需要它时 – Asia

+0

“ce”进入了哪里? 'a [a_1]'和'a [a_2]'应该有什么区别? –

回答

0

下面是最简单的可能方法:

>>> from collections import Counter 
>>> a = Counter() 
>>> a[(3, 'b', 10)] += 1 
>>> a[(3, 'b', 10)] += 1 
>>> a[(3, 'b', 10)] 
2 
>>> a[(3, 'b', 8)] 
0 

有什么办法可以解决这个问题?

+0

不完全是我的意思,我使用字典:{a_1:{(b_1),(b_2),(c_1_1),(c_1_2)},a_2 :{(b_1),(b_2),(c_1_1),(c_1_2)}}在开始时全部填充0,所以当我得到'bec'= 2和'dist'= 2时,它只会增加a_2 {b_2} ,其余的应该都是0 – Asia

+0

到目前为止,当我尝试增加一个具体数值为: a [“a _”+ str(dist)] [“b_”+ str(bec)])+ = 1 它增加了所有'a_',所以我得到a_1 {b_2}:1和a_2 {b_2 }:1并且第一个不应该改变 – Asia

+0

@Asia一个Counter是一个字典,所有的键都从0开始。 –