例如我有一本字典: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']
智慧大石
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 算法可以有效地进行多种排序,因为它可以利用数据集中已经存在的任何排序。
添加回答
举报
0/150
提交
取消