簡體   English   中英

需要按嵌套值列表的平均值對字典進行排序

[英]Need to sort a dictionary by average of nested list of values

dict = {a:[2,4,5],b:[4,6,7],c:[3,1,1]}

上面是我有字典的一個例子。 嵌套列表的長度將始終為3(由於其他代碼塊)。 我已經弄清楚了如何按字母順序和字典中列表的最高值排序。 我正在努力尋找一種方法來計算最高的平均得分。 以下是所需的輸出:

>>> get_average(dict)
>>> b : 5.66
>>> a : 3.66
>>> c : 1.66

有任何提示或解決方案嗎? 我敢肯定,最有效的方法是使用lambda。 我可以修改此代碼以獲取平均值:

sorted(dict.items(), key=operator.itemgetter(1))

首先,使用dict理解構建平均值圖:

>>> d = {'a':[2,4,5], 'b':[4,6,7], 'c':[3,1,1]}
>>> def mean(L):
        return float(sum(L))/len(L)
... 
>>> d_avg = {k: mean(v) for k, v in d.items()}
>>> d_avg
{'a': 3.6666666666666665, 'b': 5.666666666666667, 'c': 1.6666666666666667}

然后,您可以按值對它進行排序:

>>> sorted(d_avg, key=d_avg.get, reverse=True)
['b', 'a', 'c']

嘗試這個:

 d = {'a':[2,4,5], 'b':[4,6,7], 'c':[3,1,1]}
 sort = sorted(d, key=lambda k: sum(d[k]) / 3, reverse=True)
 for i in sort:
     print(i, ":", sum(d[i]) / 3)

暫無
暫無

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

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