如何按键汇总字典列表?

时间:2020-07-27 20:38:02

标签: python

我有一个字典清单。 每个字典的大小都不同,并且可以具有不同且相似的键名。

aList = [{
    'Hits': 3,
    'Blues': 4,
    'Classical': 6,
    'Metal': 8,
    'Rock': 4,
    'Funk': 5,
    'Hip Hop': 5,
    'Rap': 9,
    'Easy Listening': 3
}, {
    'Rap': 10,
    'Jazz': 4,
    'Hip Hop': 6,
    'Dance': 3,
    'Classical': 9,
    'Blues': 3,
    'Opera': 9,
    'Easy Listening': 3,
    'Country': 9,
    'Pop': 2,
    'Hits': 7
}, {
    'Blues': 1,
    'Metal': 9,
    'Hits': 8,
    'Dance': 2,
    'Funk': 9,
    'Jazz': 1,
    'Classical': 2
}]

如何存储与每个键名相对应的所有值的总和?

3 个答案:

答案 0 :(得分:2)

您肯定需要使用Counter模块中的内置collections类。这是工作代码示例:

from collections import Counter

aList = [{    
    'Hits': 3,
    'Blues': 4,
    'Classical': 6,
    'Metal': 8,
    'Rock': 4,
    'Funk': 5,
    'Hip Hop': 5,
    'Rap': 9,
    'Easy Listening': 3
}, {
    'Rap': 10,
    'Jazz': 4,
    'Hip Hop': 6,
    'Dance': 3,
    'Classical': 9,
    'Blues': 3,
    'Opera': 9,
    'Easy Listening': 3,
    'Country': 9,
    'Pop': 2,
    'Hits': 7
}, {
    'Blues': 1,
    'Metal': 9,
    'Hits': 8,
    'Dance': 2,
    'Funk': 9,
    'Jazz': 1,
    'Classical': 2
}]

counter = Counter()
for d in aList:
    counter.update(d)

print(dict(counter))
# Outputs:
# {'Hits': 18, 'Blues': 8, 'Classical': 17, 'Metal': 17, 'Rock': 4, 'Funk': 14, 'Hip Hop': 11, 'Rap': 19, 'Easy Listening': 6, 'Jazz': 5, 'Dance': 5, 'Opera': 9, 'Country': 9, 'Pop': 2}

答案 1 :(得分:1)

您可以使用<?php echo get_post_meta( $product_id, '_product_qr_code', true ); ?>

collections. Counter

答案 2 :(得分:0)

希望这对您有所帮助。。祝您编码愉快:)

import pandas as pd
df = pd.DataFrame(columns=['musics','value'])

index=0
for ele in aList:
  for i,k in ele.items():
      df.loc[index] = [i,k]
      index+=1

grped_df = df.groupby('musics').sum().sort_values('musics')
print(grped_df)

enter image description here