簡體   English   中英

對象列表中鍵值的平均值

[英]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. 對列表字典中的值進行分組
  2. 獲取他們的平均值並建立新列表

在這里,我在步驟 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.

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