2017-05-06 127 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開始。 –