Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.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_List_Sorting - Fatal编程技术网

Python 如何按列表中的多个项目将列表从高到低排序?

Python 如何按列表中的多个项目将列表从高到低排序?,python,list,sorting,Python,List,Sorting,老实说,我真的很难解释我想做什么,因为我想不出能帮助我描述它的词语。无论如何,问题是我想对列表进行排序: [['a', [10, 6, 5]], ['b', [7, 4, 2]], ['c', [10, 6, 4]], ['d', [7, 3, 2]]] 这是我试图排序的列表的一个示例。字符串是学生姓名,其中包含三个整数的列表是分数。我想使用分数将此列表从高到低排序,但如果两个列表的第一个整数相同(例如): 然后它应该决定哪一个应该比下一个整数高。我尝试过许多不同的方法,但从我尝试的结果来看,

老实说,我真的很难解释我想做什么,因为我想不出能帮助我描述它的词语。无论如何,问题是我想对列表进行排序:

[['a', [10, 6, 5]], ['b', [7, 4, 2]], ['c', [10, 6, 4]], ['d', [7, 3, 2]]]
这是我试图排序的列表的一个示例。字符串是学生姓名,其中包含三个整数的列表是分数。我想使用分数将此列表从高到低排序,但如果两个列表的第一个整数相同(例如):

然后它应该决定哪一个应该比下一个整数高。我尝试过许多不同的方法,但从我尝试的结果来看,没有一种有效。我也很难找到答案,因为我不知道如何确切地解释我的问题,尽管我希望我上面所说的已经对我的问题给出了足够的解释

如果您需要查看我的代码:

您可以使用
排序
函数的
参数,并按每个子列表的第二个元素排序。这将为每个子列表从元素0到元素N排序。而
reverse
参数是这样的,您可以从高到低排序(而不是默认的从低到高)


您还可以使用@ThiefMaster指出的键参数的
操作符.itemgetter(1)
替换
lambda

您只需指定一个键函数,返回所需的所有键。在您的情况下,每个列表的第二个元素(例如,
[10,6,5]
)执行此任务,因为比较列表会逐个元素进行比较

from operator import itemgetter
sorted(whatever, key=itemgetter(1), reverse=True)
itemgetter(1)
lambda x:x[1]
相同,但性能更高(因为它是在Python的C代码中实现的,而不是在Python代码中实现的)。

  • python内置的通过第三个关键字参数
    reverse
    排序的方法支持按相反顺序排序
  • 为了解决另一个问题,在中,数据是基于分数而不是名称排序的,这不是自然顺序,可以通过指定自定义键来解决,这是通过第二个关键字参数
    key
  • 最后一个问题是按照出现的方式排列分数。这应该留给Python列表的自然排序
实施

>>> from operator import itemgetter
>>> sorted(seq, key = itemgetter(1), reverse = True)
输出
如果类文件是“1”你真的想在那里使用
=
<代码>is检查相同的对象。这不是您想要的。您是否按最高分数或总数排序,并且您的列表是否总是具有相同的长度?看起来您已经得到了一些很好的答案,但为了将来的参考,请在您的帮助请求中正确填写您的代码。这可以防止与代码的错误链接,也可以让下一个有相同问题的人使用,他们可能会在代码被删除后的某个时候偶然发现您的问题。
from operator import itemgetter
sorted(whatever, key=itemgetter(1), reverse=True)
>>> from operator import itemgetter
>>> sorted(seq, key = itemgetter(1), reverse = True)