【发布时间】:2023-03-24 12:46:01
【问题描述】:
我需要在 python 中按降序对字典进行排序,但是当字典有两倍的数字时,我需要按升序对这些数字进行排序:
例子:
字典:
t = {0: 8, 1: 4, 2: 4, 3: 0, 4: 3, 5: 6, 6: 8, 7: 8, 8: 1, 9: 3}
我的代码:
dict(sorted(t.items(), reverse=True, key=lambda item: item[1]))
输出:
{0: 8, 6: 8, 7: 8, 5: 6, 1: 4, 2: 4, 4: 3, 9: 3, 8: 1, 3: 0}
^^^^^^^^^^
需要输出:
{0: 8, 6: 8, 7: 8, 5: 6, 2: 4, 1: 4, 4: 3, 9: 3, 8: 1, 3: 0}
^^^^^^^^^^
如何使用lambda 函数做到这一点?
提前感谢您的任何回复
【问题讨论】:
-
让我直说。您希望按值按降序对字典进行排序,但对于相同的值排序键按升序排序。对吗?
-
您预期的输出与您的要求相矛盾。当值相等时,所需的输出实际上具有 递减 顺序的键。
-
@trincot,这就是我问的原因。对于值 8,增加键顺序。对于值 4,降低键顺序。
-
当字典有两倍的数字时你的意思是正好两个,还是至少两个?跨度>
-
另外,对于这种操作,我个人更喜欢使用explicit function而不是lambda。更容易编写、扩展和调试。