Python 需要按嵌套值列表的平均值对字典进行排序
上面是我拥有的一本字典的例子。嵌套列表的长度将始终为3(由于其他代码块)。我已经知道如何在字典中按字母顺序和列表的最高值排序。我正在努力寻找一种计算最高平均分的方法。以下是所需的输出:Python 需要按嵌套值列表的平均值对字典进行排序,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,上面是我拥有的一本字典的例子。嵌套列表的长度将始终为3(由于其他代码块)。我已经知道如何在字典中按字母顺序和列表的最高值排序。我正在努力寻找一种计算最高平均分的方法。以下是所需的输出: dict = {a:[2,4,5],b:[4,6,7],c:[3,1,1]} 有什么建议甚至解决办法吗?我确信最有效的方法是使用lambda。我是否可以修改此代码以获得平均值: >>> get_average(dict) >>> b : 5.66 >>> a
dict = {a:[2,4,5],b:[4,6,7],c:[3,1,1]}
有什么建议甚至解决办法吗?我确信最有效的方法是使用lambda。我是否可以修改此代码以获得平均值:
>>> get_average(dict)
>>> b : 5.66
>>> a : 3.66
>>> c : 1.66
首先,使用dict理解建立平均值图:
sorted(dict.items(), key=operator.itemgetter(1))
然后可以按值对其进行排序:
>>> 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}
首先,使用dict理解建立平均值图:
sorted(dict.items(), key=operator.itemgetter(1))
然后可以按值对其进行排序:
>>> 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']
试试这个:
>>> sorted(d_avg, key=d_avg.get, reverse=True)
['b', 'a', 'c']
什么是a、b和c?我们可以假设字符串吗?您想要的输出似乎与最高的平均分数无关。是的,
[4,6,7]
的平均分数是5.666…,如何得到8.5?python通常不需要“lameda”,而且很少是最有效的way@timgeb对不起,不清楚,它们是整数。也为我糟糕的数学感到抱歉,我错误地将总和除以2而不是3:P什么是a、b和c?我们可以假设字符串吗?您想要的输出似乎与最高的平均分数无关。是的,[4,6,7]
的平均分数是5.666…,如何得到8.5?python通常不需要“lameda”,而且很少是最有效的way@timgeb对不起,不清楚,它们是整数。也为我糟糕的数学感到抱歉,我错误地将总和除以2,而不是3:P