sum list of dictionary values

后端 未结 7 2276
情深已故
情深已故 2020-12-20 21:23

I have a list of dictionary in this form :

[
{\'signal_8\': 1, \'signal_1\': 7, \'signal_10\': 5, \'signal_5\': 2, \'signal_2\': 5, \'signal_6\': 3, \'signa         


        
7条回答
  •  我在风中等你
    2020-12-20 22:24

    With itertools.groupby, you could do something like

    merged_list = sorted(p for l in original_list for p in l.items())
    groups = groupby(merged_list, key=lambda p: p[0])
    result = {signal: sum(pair[1] for pair in pairs) for signal, pairs in groups}
    

    If you can assume that each dictionary contains the exact same keys, the above can be simplified to

    {k: sum(d[k] for d in original_list) for k in original_list[0]}
    

    Note also that the data analysis library pandas makes operations such as these trivial:

    In [70]: import pandas as pd
    
    In [72]: pd.DataFrame(original_list).sum()
    Out[72]:
    signal_1     21
    signal_10    15
    signal_2     15
    signal_3     18
    signal_4     27
    signal_5      6
    signal_6      9
    signal_7     24
    signal_8      3
    signal_9     12
    dtype: int64
    

提交回复
热议问题