排序包含元组的元组
我有一个包含元组的元组,具体内容如下:
MY_TUPLE = (
('A','Apple'),
('C','Carrot'),
('B','Banana'),
)
我想根据里面每个小元组的第二个值来对这个元组进行排序(也就是说,我想按苹果、胡萝卜、香蕉的顺序排序,而不是按字母A、B、C的顺序)。
有什么想法吗?
4 个回答
2
sorted(my_tuple, key=lambda tup: tup[1])
换句话说,当你在比较元组中的两个元素时,要根据作为关键参数传入的函数的返回值来进行排序。
7
来自 排序迷你指南
很多时候,Python里已经有现成的功能可以满足你的需求,比如 str.lower()。还有一个叫做 operator 的模块,里面有很多有用的函数。比如,你可以用 operator.itemgetter() 来根据元组的第二个元素进行排序:
>>> import operator
>>> L = [('c', 2), ('d', 1), ('a', 4), ('b', 3)]
>>> map(operator.itemgetter(0), L)
['c', 'd', 'a', 'b']
>>> map(operator.itemgetter(1), L)
[2, 1, 4, 3]
>>> sorted(L, key=operator.itemgetter(1))
[('d', 1), ('c', 2), ('b', 3), ('a', 4)]
希望这对你有帮助。
25
from operator import itemgetter
MY_SORTED_TUPLE = tuple(sorted(MY_TUPLE, key=itemgetter(1)))
MY_SORTED_TUPLE = tuple(sorted(MY_TUPLE, key=lambda item: item[1]))
或者不使用 itemgetter
: