how to sort a list of tuples with list[i][1] as key from biggest to smallest
本问题已经有最佳答案,请猛点这里访问。
这是我的单子。
1 | [('a', 12), ('c', 4), ('b', 3), ('e', 6), ('d', 5), ('g', 50), ('f', 30),] |
排序此列表的结果将是。
1 | [('g', 50), ('f', 30), ('a', 12), ('e', 6), ('d', 5), ('c', 4), ('b', 3)] |
号
我尝试使用:
1 | x = sorted(alpha_items, key=lambda x: x[1],) |
但我需要扭转它。
我可以再加一把钥匙吗?
显而易见的方法是显式地使用
1 | sorted(alpha_items, key=lambda x: x[1], reverse=True) |
如果你是按数字排序,你也可以把它们取反:
1 | sorted(alpha_items, key=lambda x: -x[1]) |
1 2 3 4 5 6 7 8 | 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)] |
为什么不像气泡这样简单的排序算法呢?
基本上,我们检查是否:
1 | a[i][1]<a[i+1][1]. |
如果是这样的话,我们就简单地交换它们。
重复。
检查sorting-algorithms.com并查看气泡算法动画。
1 2 3 4 5 6 7 8 | >>> 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)] |
1 | alpha_items.sort(key=lambda s:s[1], reverse = True) |