我有一个元组列表,看起来像这样:
[('abc', 121),('abc', 231),('abc', 148), ('abc',221)]
我想按元组内的整数值升序对这个列表排序。这可能吗?
我有一个元组列表,看起来像这样:
[('abc', 121),('abc', 231),('abc', 148), ('abc',221)]
我想按元组内的整数值升序对这个列表排序。这可能吗?
当前回答
对于Python 2.7+,这可以使接受的答案更具可读性:
sorted([('abc', 121),('abc', 231),('abc', 148), ('abc',221)], key=lambda (k, val): val)
其他回答
对于Python 2.7+,这可以使接受的答案更具可读性:
sorted([('abc', 121),('abc', 231),('abc', 148), ('abc',221)], key=lambda (k, val): val)
在奇肯的回答中, 这就是按第二项降序排序元组列表的方法。
sorted([('abc', 121),('abc', 231),('abc', 148), ('abc',221)],key=lambda x: x[1], reverse=True)
作为一个python新手,我只是想提一下,如果数据确实是这样的:
data = [('abc', 121),('abc', 231),('abc', 148), ('abc',221)]
然后sorted()会自动按照元组中的第二个元素排序,因为第一个元素都是相同的。
对于就地排序,使用
foo = [(list of tuples)]
foo.sort(key=lambda x:x[0]) #To sort by first element of the tuple
OP中的排序值是整数这一事实与问题本身无关。换句话说,如果排序值是文本,则接受的答案将有效。我提出这一点也是为了指出在排序过程中可以修改排序(例如,考虑大写和小写)。
>>> sorted([(121, 'abc'), (231, 'def'), (148, 'ABC'), (221, 'DEF')], key=lambda x: x[1])
[(148, 'ABC'), (221, 'DEF'), (121, 'abc'), (231, 'def')]
>>> sorted([(121, 'abc'), (231, 'def'), (148, 'ABC'), (221, 'DEF')], key=lambda x: str.lower(x[1]))
[(121, 'abc'), (148, 'ABC'), (231, 'def'), (221, 'DEF')]