Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 需要按嵌套值列表的平均值对字典进行排序_Python_Python 3.x_Dictionary - Fatal编程技术网

Python 需要按嵌套值列表的平均值对字典进行排序

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

上面是我拥有的一本字典的例子。嵌套列表的长度将始终为3(由于其他代码块)。我已经知道如何在字典中按字母顺序和列表的最高值排序。我正在努力寻找一种计算最高平均分的方法。以下是所需的输出:

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