2017-09-01 178 views
0

這可能是重複的,所以如果我沒有找到任何東西,請讓我知道。返回字典列表中特定鍵的平均值/平均值

我的問題是在標題中。

我知道下面的代碼會這樣做,但我不認爲這是應該如何完成的。這可以壓縮到一個乾淨的功能,做同樣的事情?內建函數怎麼樣?

def find_sorted_avg(dict_list, key): 
    total = 0 

    for item in dict_list: 
     total += item[key] 

    return total/len(dict_list) 

如果您知道更好的方法,請告訴我。

+1

你能提供dict_list'的'一個例子,和你」 d期望輸出是?如果此代碼正常工作,您可能需要查看[代碼評論](https://codereview.stackexchange.com/)。 –

+0

應該更好:'total = sum(dict_list中item的[key]]/len(dict_list)' –

+1

您是指'total + = item [key]' – jacoblaw

回答

5

要總結你的類型的字典列表中key的所有值。

您可以通過列表的長度喂發電機修真sum,和鴻溝,在一條線:

total = sum(item.get(key,0) for item in dict_list)/len(dict_list) 

get(key,0)確保,如果關鍵是缺席一個快譯通,它仍然可以工作( 0時發出關鍵不在字典)

(當然,如果你想這個崩潰大聲改爲由item[key]更換item.get(key,0)

+0

好的,這已經超過了OP的要求。我編輯了我的帖子('佔'可能是壞的措辭) –

0

這是假設,關鍵是在每個dict_list字典:

reduce(lambda _sum, _dict: _sum + _dict[key], dict_list, 0)/len(dict_list)