为了账号安全,请及时绑定邮箱和手机立即绑定

Sorted() 方法在 lambda 中使用元组,但方向不同(升序、降序)

Sorted() 方法在 lambda 中使用元组,但方向不同(升序、降序)

慕工程0101907 2023-12-05 15:03:38
例如我有一本字典:a = {'B': 2674, 'C': 2000, 'A': 2674}我需要按值降序对它进行排序。但是,当值相等时,则按键按字母顺序升序。输出带有键的列表。b = sorted(a, key=lambda d: (d[1], d[0]))有没有办法单独设置反向?
查看完整描述

2 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

对于数值,您可以使用 key 函数通过简单地对值取反来实现这两个排序标准。然后使用推导式仅提取键:

b = [k for k, _ in sorted(a.items(), key=lambda i: (-i[1], i[0]))]
# ['A', 'B', 'C']


查看完整回答
反对 回复 2023-12-05
?
智慧大石

TA贡献1946条经验 获得超3个赞

来自文档

s = sorted(a, key=lambda d: d[1]) # sort on secondary key
sorted(s, key=lambda d: d[0], reverse=True) # now sort on primary key, descending

这就是它本来应该做的方式

Python 中使用的 Timsort 算法可以有效地进行多种排序,因为它可以利用数据集中已经存在的任何排序。


查看完整回答
反对 回复 2023-12-05
  • 2 回答
  • 0 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信