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

例如我有一本字典:

a = {'B': 2674, 'C': 2000, 'A': 2674}

我需要按值降序对它进行排序。但是,当值相等时,则按键按字母顺序升序。输出带有键的列表。

b = sorted(a, key=lambda d: (d[1], d[0]))

有没有办法单独设置反向?


慕工程0101907
浏览 137回答 2
2回答

白猪掌柜的

对于数值,您可以使用 key 函数通过简单地对值取反来实现这两个排序标准。然后使用推导式仅提取键:b = [k for k, _ in sorted(a.items(), key=lambda i: (-i[1], i[0]))] # ['A', 'B', 'C']

智慧大石

来自文档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 算法可以有效地进行多种排序,因为它可以利用数据集中已经存在的任何排序。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python