需要按嵌套值列表

时间:2016-01-22 21:20:24

标签: python python-3.x dictionary

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

2 个答案:

答案 0 :(得分: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']

答案 1 :(得分: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)