Python排序字​​典:键[升序]然后值[降序]

Rul*_*rld 5 python sorting

我找了很长时间,没有找到实际的答案,因为我看不到任何以升序键开始然后以降序值开头的答案。

一个更清楚的例子:

d = {'banana':3, 'orange':5, 'apple':5}
out: [('apple', 5), ('orange', 5), ('banana', 3)]
Run Code Online (Sandbox Code Playgroud)

在做了一些研究之后,我得出了这样的结论:

sorted(d.items(), key=operator.itemgetter(1,0), reverse=True)
out: [('orange', 5), ('apple', 5), ('banana', 3)]
Run Code Online (Sandbox Code Playgroud)

这是因为它对值和键都进行了反向排序。我需要不倒转的钥匙。

我真的很感激这里的一些帮助。提前致谢!

Jas*_*n S 3

你所问的问题是不可能的。字典不仅是无序的(可以用 来克服OrderedDict),而且它们的键是唯一的,这意味着按键排序然后按值排序的想法是无意义的。

您想要的是使用元组列表,或者使用OrderedDict其中值是列表的列表(以便它们可以具有多个值并进行排序。)

元组列表:

x = [(1,7), (5,3), (8,3), (1,4), (12,4), (12,7), (12,5)]
x.sort(key=itemgetter(1), reverse=True)
x.sort(key=itemgetter(0))
# result: [(1, 7), (1, 4), (5, 3), (8, 3), (12, 7), (12, 5), (12, 4)]
Run Code Online (Sandbox Code Playgroud)