Python Dict理解合并具有相同日期的Dict列表中的所有值
我想在同一年增加所有目录的价值。我已经尝试了几个小时的Python Dict理解合并具有相同日期的Dict列表中的所有值,python,Python,我想在同一年增加所有目录的价值。我已经尝试了几个小时的defaultdict(),但是找不到任何简单地增加总数的例子 我有一个清单,上面是这样的: [ { "year": 2020, "value": 6500.0 }, { "year": 2020, "value": 40500.0 }, { "year": 2019, "value": 6500.0
defaultdict
(),但是找不到任何简单地增加总数的例子
我有一个清单,上面是这样的:
[
{
"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
}
]
我希望它看起来像这样:
[
{
"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)
一旦您的
连接了defaultdict(尽管您需要一个defaultdict(list)
来保留重复项!),在其上运行一个总和作为列表:
sums = [{"year": key, "value": sum(values)} for (key, values) in concatenated.items()]
一旦您的连接了defaultdict(尽管您需要一个defaultdict(list)
来保留重复项!),在其上运行一个总和作为列表:
sums = [{"year": key, "value": sum(values)} for (key, values) in concatenated.items()]
更容易使用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)]
更容易使用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)]