如果我们要基于列表的所有索引而不只是第一个元素进行比较。如果列表相同,则按键排序。列表的长度也是未知的。在这种情况下,如何对键进行排序。下面是示例:
{'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)))
获取上述代码错误。有人可以帮我吗?
答案 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)
因此,首先基于键进行排序,然后根据相反的值进行排序。