如何对含混合类型元素的元组列表进行降序排序?
如何对元组列表按元组首元素降序排序?
你的问题出在sorted()函数的默认排序方向上——它默认是升序排列,而你的原始列表本身就是按元组第一个元素从小到大排列的,所以之前的代码执行后输出和原顺序一致,没有变化。
要实现你想要的降序输出(12.5 → 6.25 → 3.13),有两种简单的方法:
方法1:添加reverse=True参数
直接在sorted()里指定反转排序方向,这是最直观的方式:
a = [(3.13, ['a', 'b', 'c']), (6.25, ['d', 'e', 'f']), (12.5, ['g', 'h', 'i'])] for i in sorted(a, key=lambda x: x[0], reverse=True): print(i[0])
执行这段代码后,输出就是你期望的:
12.5 6.25 3.13
方法2:对排序键取负值
通过对key函数返回的数值取负,让sorted()默认的升序逻辑变成实际的降序效果:
a = [(3.13, ['a', 'b', 'c']), (6.25, ['d', 'e', 'f']), (12.5, ['g', 'h', 'i'])] for i in sorted(a, key=lambda x: -x[0]): print(i[0])
这种方法同样能得到和方法1一样的输出结果,适合偏好简洁写法的场景。
两种方法都能满足你的需求,选哪种全看个人习惯~
内容的提问来源于stack exchange,提问作者Francesco Dassisis
相关产品推荐
相关产品推荐

