将字典按键值进行排序

2024-04-19 10:45:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我想对可能有int或tuple作为键的字典进行双重排序。在

d = {33:1, 44:1, (0,5):1  12:2, (1,2):2}

我希望它首先按值排序,然后按键排序(如果可能,不是一个是元组,第二个是int)。在

有人能帮我吗?在

提前谢谢


Tags: 字典排序按键int元组双重tuple
3条回答

这个怎么样?在

>>> d = {33:1, 44:1, (0,5):1, 12:2, (1,2):2}
>>> helper_dict = {}
>>> for k,v in d.items():
        helper_dict.setdefault(v,[]).append(k)    

>>> sorted_items = [(k,i) for k in sorted(helper_dict.keys()) for i in sorted(helper_dict[k]) ]
>>> sorted_items
[(1, 33), (1, 44), (1, (0, 5)), (2, 12), (2, (1, 2))]
>>> d = {33:1, 44:1, (0,5):1, 12:2, (1,2):2}
>>> {k:v for k,v in sorted(d.items(), key=lambda v: v[::-1])}
{(1, 2): 2, 33: 1, 44: 1, (0, 5): 1, 12: 2}
>>> from collections import OrderedDict
>>> OrderedDict({k:v for k,v in sorted(d.items(), key=lambda v: v[::-1])})
OrderedDict([((1, 2), 2), (33, 1), (44, 1), ((0, 5), 1), (12, 2)])
>>> sorted(d.items(), key=lambda v: v[::-1])
[(33, 1), (44, 1), ((0, 5), 1), (12, 2), ((1, 2), 2)]

或者只是

sorted(d.items(), key=lambda v: v[::-1])

编辑: 因为OP需要结果作为字典

^{pr2}$

相关问题 更多 >