2016-01-22 157 views
-1
dict = {a:[2,4,5],b:[4,6,7],c:[3,1,1]} 

以上是我擁有的字典示例。嵌套列表的長度將始終爲3(由於其他代碼塊)。我已經想出瞭如何按字母順序排序並按字典中列表的最大值排序。我正在努力尋找計算最高AVERAGE分數的方法。以下是所需的輸出:需要按值的嵌套列表的平均值對字典進行排序

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

任何提示,甚至解決方案?我很確定最有效的方法是使用lambda。我可以修改這個代碼,以獲得平均:

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

什麼是a,b和c ?我們可以假設字符串? – timgeb

+0

您的期望輸出似乎與平均得分最高沒有任何關係。 –

+0

是的,'[4,6,7]'的平均值是5.666 ...,你怎麼得到8.5? – timgeb

回答

2

試試這個:

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) 
2

首先,使用字典理解在地圖上標註的平均值:

>>> 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'] 
相關問題