的總和值我回答了另一個OP的question關於如何添加嵌套字典中的不同項目,我想出了一個三嵌套for
循環方法來在三級詞典中添加項目,這是可行的,但meeeh ...我很確定它可以做得更簡潔。壁壘和3線嵌套字典在單線(或兩線)
爲了提供一個真正的用例場景:比方說,我有一個攝像頭在一些商店的門口,計數有多少人走在和走出商店 10周分鐘的時間間隔的一些數據:
data = {
"2014/01/01": {
"15:00:00" : {
"ins": 7,
"outs": 5,
},
"15:10:00" : {
"ins": 24,
"outs": 10,
},
"15:20:00" : {
"ins": 10,
"outs": 20,
},
},
"2014/01/02": {
"15:00:00" : {
"ins": 10,
"outs": 10,
},
"15:10:00" : {
"ins": 12,
"outs": 5,
},
"15:20:00" : {
"ins": 5,
"outs": 10,
},
},
}
我想壁球這些字典在一起,通過一個特定的時間,加上插件和出局將它們分組不分日期的。比方說,我想知道「有多少人進入和離開我的場地,無論日期爲」還是使用不同的措辭「我想知道從那以後總共有多少次輸入和輸出每次斗的時候開始「
這將是添加插件和出局對於其鍵中的所有類型的字典的結果是時間在data
字典中(不考慮第一次約會」水平「)對於上面提供的示例data
,那將是:
"15:00:00": {
"ins": 17 # (7 + 10)
"outs": 15 # (5 + 10)
},
"15:10:00": {
"ins": 36 # (24 + 12)
"outs": 15 # (10 + 5)
},
"15:20:00": {
"ins": 15 # (10 + 5)
"outs": 30 # (20 + 10)
}
有沒有辦法......不知何故(我猜想通過itertools,但我不知道哪些工具是正確的),從data
開始,最終得到的結果如上所示線(或兩個)?
我一直在擺弄與
找到問題的答案,但我無法弄清楚如何得到我想要的東西。我要麼得到一個Counter
對象的列表(然後我不知道該怎麼處理它們),或者我得到一個錯誤,因爲我試圖添加兩個dict
s ...
我知道真的不是很大(3個for
循環完成工作),但我很好奇這個的可行性,以及如何縮短我的代碼(並可能瞭解itertools
,這是關於時間...)
謝謝你提前。
我想你可以用'sorted'和['itertools.groupby'](https://docs.python.org/2/library/itertools.html#itertools.groupby)的組合來完成它,但我不會現在沒有時間留下詳細的答案。 – 2014-12-01 16:42:37
你的代碼應該可以翻譯成一個很好的單行列表comp,但它會有點長和雜亂,可能沒有功能上的不同。也許發佈你的代碼? – user2782067 2014-12-01 16:43:47
@ user2782067,我可以想出最好的東西(嗯......我可以使用'values()'的時候濫用'keys()',但我其實並不在乎這麼多)回答提示這個問題(這個答案:http://stackoverflow.com/a/27217180/289011) – BorrajaX 2014-12-01 16:45:46