以值作为列表对python字典进行排序

时间:2020-08-06 08:47:58

标签: python-3.x sorting dictionary

如果我们要基于列表的所有索引而不只是第一个元素进行比较。如果列表相同,则按键排序。列表的长度也是未知的。在这种情况下,如何对键进行排序。下面是示例:

{'A': [5, 0, 0], 'B': [0, 2, 3], 'C': [0, 3, 2]}

输出:

[A,C,B]

说明:A位于第一位置,因为在0处索引5最高,其余均为0。C位于第二位置,因为C的第二第一索引与B的第一索引相比为3。您可以看到我们需要比较所有位置对其进行排序,我们不知道之前的数组大小。

我尝试了以下代码:

countPos = {'A': [5, 0, 0], 'B': [0, 2, 3], 'C': [0, 3, 2]}
res = sorted(countPos.items(), key=lambda x: ((-x[1][i]) for i in range(3)))

获取上述代码错误。有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

我认为有一个解决方案,该解决方案有效。这可能很幼稚。我鼓励上司纠正我。

r = sorted(countPos.items(), key=lambda x: x[0])
r = dict(r)
res = sorted(r.items(), key=lambda x: x[1], reverse=True)

因此,首先基于键进行排序,然后根据相反的值进行排序。

相关问题