字典数据是这样的
[
{'br' : 'Kadek', 'mnt' : '2020-10', 'vl' : 30},
{'br' : 'Kadek', 'mnt' : '2020-10', 'vl' : 40},
{'br' : 'Kadek', 'mnt' : '2020-10', 'vl' : 20},
{'br' : 'Dede', 'mnt' : '2020-5', 'vl' : 20},
{'br' : 'Dede', 'mnt' : '2020-5', 'vl' : 40},]
,当br和MNT具有相同的值
时,结果为sum vl[
{'br' : 'Kadek', 'mnt' : '2020-10', 'vl' : 90},
{'br' : 'Dede', 'mnt' : '2020-5', 'vl' : 60}
]
如果您可以使用pandas
,请尝试:
import pandas as pd
data = [{'br' : 'Kadek', 'mnt' : '2020-10', 'vl' : 30},
{'br' : 'Kadek', 'mnt' : '2020-10', 'vl' : 40},
{'br' : 'Kadek', 'mnt' : '2020-10', 'vl' : 20},
{'br' : 'Dede', 'mnt' : '2020-5', 'vl' : 20},
{'br' : 'Dede', 'mnt' : '2020-5', 'vl' : 40}]
# turn data into a pandas dataframe
df = pd.DataFrame(data)
# take the sum when br and mnt are the same
df_grouped = df.groupby(['br','mnt']).agg({'vl':'sum'}).reset_index()
df_grouped
这个输出:
br mnt vl
0 Dede 2020-5 60
1 Kadek 2020-10 90
如果确实需要,可以使用以下命令将其转换回字典列表:
df_grouped.to_dict('records')
from collections import Counter
data = [
{'br' : 'Kadek', 'mnt' : '2020-10', 'vl' : 30},
{'br' : 'Kadek', 'mnt' : '2020-10', 'vl' : 40},
{'br' : 'Kadek', 'mnt' : '2020-10', 'vl' : 20},
{'br' : 'Dede', 'mnt' : '2020-5', 'vl' : 20},
{'br' : 'Dede', 'mnt' : '2020-5', 'vl' : 40},]
cnt = Counter()
for i in data:
cnt[i['br'], i['mnt']] += i['value']
result = ([{'br': k[0], 'mnt': k[1], 'value': v}
for k, v in cnt.items()])
print(result)
输出:
[{'br': 'Kadek', 'mnt' : '2020-10', 'value': 90},
{'br': 'Dede', 'mnt' : '2020-5', 'value': 60}]