你循環在你的字典鍵,再算上相同的密鑰很多倍。關於你的循環體沒有什麼動態的:
counterdict[int(newdict['week'])][newdict['stat']]+=1
如果你的字典中有12個鍵,上面的行會執行12次。
如果您希望看到您的循環訪問多個鍵具有相同的名稱,您誤會了字典的工作方式。字典地圖獨特的鍵值。在字面解釋聲明中指定鍵不止一次將導致只有一個每個密鑰副本一本字典,與他們的價值觀的一個:
>>> {'foo': 'bar', 'foo': 'baz'}
{'foo': 'baz'}
在CPython中,編譯器給你每個鍵最後值來定義,這就是爲什麼你在你的例子字典看到'week': '1210'
。
你的樣品輸入字典最終只有四個獨特的鍵:
>>> newdict ={'category': 'failure', 'week': '1209', 'stat': 'tdc_ok', 'severityDue': '2_critic', 'category': 'failure', 'week': '1210', 'stat': 'tdc_nok', 'severityDue': '2_critic'}
>>> newdict
{'category': 'failure', 'week': '1210', 'stat': 'tdc_nok', 'severityDue': '2_critic'}
>>> len(newdict)
4
這讓我懷疑你跑你的循環3次來到12的計數(遍歷字典爲您提供了4個按鍵) 。
如果你有字典的實際列表,然後取每個單獨的字典從該列表並使用它作爲你的計數,計算:
for d in list_of_dictionaries:
counterdict[int(d['week'])][d['stat']] += 1
其中list_of_dictionaries
可能是:
[
{'category': 'failure', 'week': '1209', 'stat': 'tdc_ok', 'severityDue': '2_critic'},
{'category': 'failure', 'week': '1210', 'stat': 'tdc_nok', 'severityDue': '2_critic'},
]
提示:在分配它後直接打印'newdict' ...您可能會感到驚訝... –
字典必須具有唯一鍵。你確定他們沒有被你的代碼覆蓋嗎? –
我不明白這個問題,你能否給出更多的上下文? – mbdavis