[英]Can a list of all member-dict keys be created from a dict of dicts using a list comprehension?
[英]Dict comprehension merge all values in list of dicts with same date
我想添加同一年所有字典的值。 我一直在嘗試defaultdict
( https://docs.python.org/3/library/collections.html#defaultdict-examples ) 幾個小時,但找不到任何簡單地增加總數的例子。
我有一個看起來像這樣的字典列表:
[
{
"year": 2020,
"value": 6500.0
},
{
"year": 2020,
"value": 40500.0
},
{
"year": 2019,
"value": 6500.0
},
{
"year": 2019,
"value": 20000.0
}
]
我希望它看起來像這樣:
[
{
"year": 2020,
"value": 47000.0
}
{
"year": 2019,
"value": 26500.0
}
]
我嘗試了大量的defaultdict
變體,例如:
all_won_deals = //contains dict above
concenated = collections.defaultdict(set)
for k, v in all_won_deals:
concenated[k].add(v)
使用itertools.groupby
更容易。
from itertools import groupby
from operator import itemgetter
get_year = itemgetter('year') # For sorting and grouping
get_value = itemgetter('value') # For aggregating
result = [{'year': y,
'value': sum(map(get_value, ds))
}
for y, ds in groupby(sorted(all_won_deals, key=get_year), get_year)]
一旦你有你的concatenated
defaultdict(雖然你需要一個defaultdict(list)
來保留重復!),運行一個總和作為列表理解:
sums = [{"year": key, "value": sum(values)} for (key, values) in concatenated.items()]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.