我想从python中的字典中获取键的排序列表(我的字典是int到int映射).我希望值按升序排序.但是在碰撞的情况下(相同的值),我希望按键的数值对键进行排序.以下代码就是这样做的
key=lambda x: (dict[x],x)
Run Code Online (Sandbox Code Playgroud)
但是,我希望按降序排序值和键的排序(仅在发生碰撞时)才能降序.我可以应用反向参数,但这将以相同的方式对键及其值起作用.
有没有办法单独做?
例
>>> my_dict = {1:5, 2:4, 3:5, 26:3, 5:2, 6:4, 8:3}
>>> my_dict
{1: 5, 2: 4, 3: 5, 5: 2, 6: 4, 8: 3, 26: 3}
>>> sorted_list = sorted(my_dict, key=my_dict.get)
>>> print sorted_list
[5, 8, 26, 2, 6, 1, 3]
Run Code Online (Sandbox Code Playgroud)
我希望输出为[5,26,8,6,2,3,1]
你有几个选择:
>>> my_dict = {1:5, 2:4, 3:5, 26:3, 5:2, 6:4, 8:3}
>>> sorted(my_dict, key=lambda x: (my_dict[x], -x))
[5, 26, 8, 6, 2, 3, 1]
>>> sorted(sorted(my_dict)[::-1], key=my_dict.get)
[5, 26, 8, 6, 2, 3, 1]
>>> sorted(sorted(my_dict, reverse=True), key=my_dict.get)
[5, 26, 8, 6, 2, 3, 1]
Run Code Online (Sandbox Code Playgroud)
第一个取决于键是数字的(或者至少是你可以否定的东西),这比最后两个更不普遍,后者只使用排序稳定的事实.
| 归档时间: |
|
| 查看次数: |
3277 次 |
| 最近记录: |