簡體   English   中英

如何按鍵匯總字典列表?

[英]How do I sum a list of dictionaries by key?

我有一個字典列表。 每個字典都有不同的大小,並且可以有不同和相似的鍵名。

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
}]

如何存儲每個鍵名對應的所有值的總和?

您肯定需要使用collections模塊中的內置Counter class。 這是工作代碼示例:

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}

您可以使用collections. Counter collections. Counter

from collections import Counter

totals = Counter()
for elem in aList:
    totals.update(elem)
print(totals)
Counter({'Rap': 19, 'Hits': 18, 'Classical': 17, 'Metal': 17, 'Funk': 14, 'Hip Hop': 11, 'Opera': 9, 'Country': 9, 'Blues': 8, 'Easy Listening': 6, 'Jazz': 5, 'Dance': 5, 'Rock': 4, 'Pop': 2})

希望這可以幫助你..快樂編碼:)

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)

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM