Python 如何将list[i][1]作为键的元组列表从最大到最小排序

Python 如何将list[i][1]作为键的元组列表从最大到最小排序,python,sorting,key,Python,Sorting,Key,这是我的名单 [('a', 12), ('c', 4), ('b', 3), ('e', 6), ('d', 5), ('g', 50), ('f', 30),] 对该列表进行排序的结果将是 [('g', 50), ('f', 30), ('a', 12), ('e', 6), ('d', 5), ('c', 4), ('b', 3)] 我尝试使用: x = sorted(alpha_items, key=lambda x: x[1],) 但我需要扭转它 我可以再加一把钥匙吗

这是我的名单

[('a', 12), ('c', 4), ('b', 3), ('e', 6), ('d', 5), ('g', 50), ('f', 30),]  
对该列表进行排序的结果将是

[('g', 50), ('f', 30), ('a', 12), ('e', 6), ('d', 5), ('c', 4), ('b', 3)]  
我尝试使用:

x = sorted(alpha_items, key=lambda x: x[1],)  
但我需要扭转它


我可以再加一把钥匙吗

显而易见的方法是明确使用
reverse
参数,该参数正是为此目的而存在的:

sorted(alpha_items, key=lambda x: x[1], reverse=True)
如果按数字排序,也可以将其取反:

sorted(alpha_items, key=lambda x: -x[1])

显而易见的方法是显式使用
reverse
参数,该参数正是为此目的而存在的:

sorted(alpha_items, key=lambda x: x[1], reverse=True)
如果按数字排序,也可以将其取反:

sorted(alpha_items, key=lambda x: -x[1])
operator.itemgetter(n)
构造一个可调用对象,该对象假定iterable对象(list、tuple、set)作为输入,并从中提取第n个元素

In [26]: mylist=[('a', 12), ('c', 4), ('b', 3), ('e', 6), ('d', 5), ('g', 50), ('f', 30),]

In [27]: from operator import itemgetter

In [30]: s_l=sorted(mylist,key=itemgetter(1),reverse=True)

In [31]: s_l
Out[31]: [('g', 50), ('f', 30), ('a', 12), ('e', 6), ('d', 5), ('c', 4), ('b', 3)]
operator.itemgetter(n)
构造一个可调用对象,该对象假定iterable对象(list、tuple、set)作为输入,并从中提取第n个元素

In [26]: mylist=[('a', 12), ('c', 4), ('b', 3), ('e', 6), ('d', 5), ('g', 50), ('f', 30),]

In [27]: from operator import itemgetter

In [30]: s_l=sorted(mylist,key=itemgetter(1),reverse=True)

In [31]: s_l
Out[31]: [('g', 50), ('f', 30), ('a', 12), ('e', 6), ('d', 5), ('c', 4), ('b', 3)]

为什么不像bubble这样简单的排序算法呢

基本上,我们检查:

a[i][1]<a[i+1][1]. 
a[i][1]>>a=[('a',12),('c',4),('b',3),('e',6),('d',5),('g',50),('f',30),]
>>>对于范围内的元素(len(a)-1,0,-1):
...   对于范围内的i(元素):
...     如果a[i][1]>>a
[('g',50),('f',30),('a',12),('e',6),('d',5),('c',4),('b',3)]

为什么不像bubble这样简单的排序算法呢

基本上,我们检查:

a[i][1]<a[i+1][1]. 
a[i][1]>>a=[('a',12),('c',4),('b',3),('e',6),('d',5),('g',50),('f',30),]
>>>对于范围内的元素(len(a)-1,0,-1):
...   对于范围内的i(元素):
...     如果a[i][1]>>a
[('g',50),('f',30),('a',12),('e',6),('d',5),('c',4),('b',3)]

只有第二种方法有效。第一个按最后一个项目的升序排序,刚好是第二个项目。感谢@TigerhawkT3的帮助,只有第二个项目有效。第一个按最后一项的升序排序,这恰好是第二项。感谢@TigerhawkT3为head的upOr
反转(alpha_items,key=lambda x:x[1])
@Malik,这不起作用@哦,谢谢。我从来不知道。@MalikBrahimi我猜你的意思是
相反(排序…
?我已经考虑过了,但它给了您一个迭代器,更重要的是,我认为排序然后立即反转而不是按所需顺序排序是错误的,特别是因为存在反转参数。@StefanPochmann不,我的意思是用键严格反转,但我错了。或者
反转(alpha_items,key=lambda x:x[1])
@Malik,那不行。@TigerhawkT3哦,谢谢。我从来不知道。@MalikBrahimi我想你的意思是
(排序…
?我已经考虑过了,但它给了您一个迭代器,更重要的是,我认为排序然后立即反转而不是按所需顺序排序是错误的,特别是因为存在反转参数。@StefanPochmann不,我的意思是用键严格反转,但我错了。您应该解释如何和w这条代码为什么有效。否则,它对原始海报没有好处。你应该解释这条代码的工作方式和原因。否则,它对原始海报没有好处。