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这条代码为什么有效。否则,它对原始海报没有好处。你应该解释这条代码的工作方式和原因。否则,它对原始海报没有好处。