[英]average of key value in list of objects
我有一個像這樣的 object 列表。
data = [{123: 0.5}, {123: 0.6}, {23: 0.3}, {23: 0.2}]
如果鍵是重復的,那么所有值將被平均如下。
[{123: 0.8}, {23: 0.25}]
我試過使用 lambda 但沒有得到任何運氣。
您是否正在尋求任何特別有效的東西。 一個快速的蠻力方法看起來像這樣:
data = [{123: 0.5}, {123: 0.6}, {23: 0.3}, {23:0.2}]
my_dictionary = {}
for dictionary in data:
for key in dictionary:
if key in my_dictionary:
my_dictionary[key].append(dictionary[key])
else:
my_dictionary[key] = [dictionary[key]]
for key in my_dictionary:
my_dictionary[key] = sum(my_dictionary[key]) / len(my_dictionary[key])
print(my_dictionary)
Output 看起來像這樣:
{123: 0.55, 23: 0.25}
如果您需要一個字典列表,那么您可以創建一個列表,其中每個條目都是上面轉換為字典的字典的鍵。
您可以分兩步執行此操作:
在這里,我在步驟 1 中使用了defaultdict(list)
,因為它使它變得如此簡單:
from collections import defaultdict
groups = defaultdict(list)
for d in data:
for k,v in d.items():
groups[k].append(v)
out = [{k: sum(v)/len(v)} for k,v in groups.items()]
print(out)
Output:
[{123: 0.55}, {23: 0.25}]
如果您不介意使用 pandas:
import pandas as pd
dict(pd.DataFrame(data).mean())
它給:
{23: 0.25, 123: 0.55}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.