如何以 list[i][1] 作为键从大到小对元组列表进行排序
how to sort a list of tuples with list[i][1] as key from biggest to smallest
这是我的清单。
[('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])
operator.itemgetter(n)
构造一个可调用对象,假定可迭代对象(列表、元组、集合)作为输入,并从中获取第 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)]
alpha_items.sort(key=lambda s:s[1], reverse = True)
为什么不用像冒泡这样简单的排序算法?
基本上我们检查是否:
a[i][1]<a[i+1][1].
如果是这样,我们就简单地交换它们。
重复。
查看排序-algorithms.com并查看泡泡算法动画
>>> a = [('a', 12), ('c', 4), ('b', 3), ('e', 6), ('d', 5), ('g', 50),('f', 30),]
>>> for elem in range(len(a)-1, 0, -1):
... for i in range(elem):
... if a[i][1]<a[i+1][1]:
... a[i], a[i+1] = a[i+1], a[i]
...
>>> a
[('g', 50), ('f', 30), ('a', 12), ('e', 6), ('d', 5), ('c', 4), ('b', 3)]
这是我的清单。
[('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])
operator.itemgetter(n)
构造一个可调用对象,假定可迭代对象(列表、元组、集合)作为输入,并从中获取第 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)]
alpha_items.sort(key=lambda s:s[1], reverse = True)
为什么不用像冒泡这样简单的排序算法?
基本上我们检查是否:
a[i][1]<a[i+1][1].
如果是这样,我们就简单地交换它们。
重复。
查看排序-algorithms.com并查看泡泡算法动画
>>> a = [('a', 12), ('c', 4), ('b', 3), ('e', 6), ('d', 5), ('g', 50),('f', 30),]
>>> for elem in range(len(a)-1, 0, -1):
... for i in range(elem):
... if a[i][1]<a[i+1][1]:
... a[i], a[i+1] = a[i+1], a[i]
...
>>> a
[('g', 50), ('f', 30), ('a', 12), ('e', 6), ('d', 5), ('c', 4), ('b', 3)]