如何在Python中按每个索引的整数值来排序元组列表?

Pyd*_*man 1 python tuples list-comprehension list python-2.7

给出一个元组列表,例如

[('a','b','4'),('c','d','9'),('e','f','2')]
Run Code Online (Sandbox Code Playgroud)

每个元组的第三个元素将始终是整数的字符串值.

我想把每个元组写成一行csv使用csv.writerow().在我这样做之前,我想重新排序元组(理想情况下,通过覆盖现有列表或创建一个新元组),使得它们按照每个元素的第三个元素的整数值的降序编写.

c,d,9
a,b,4
e,f,2
Run Code Online (Sandbox Code Playgroud)

我试图在列表理解中想象某种多样的if/else组合,但肯定会有更简单的方法吗?

小智 8

sorted函数(或list方法sort)采用可选参数reverse,使您可以按递减顺序进行排序,并key允许你指定什么排序.

l = [('a','b','4'),('c','d','9'),('e','f','2')]
l.sort(key=lambda x: int(x[2]), reverse=True)
Run Code Online (Sandbox Code Playgroud)

按顺序为您提供所需的列表.

  • @kindall我想这只是个人偏好,因为用"反向"看起来我觉得更清楚 (6认同)