如何按值(DESC)然后按键(ASC)对字典进行排序?

ecr*_*ecr 17 python sorting key

在发现惊人之后sorted(),我再次陷入困境.

问题是我有一个表单的字典,string(key) : integer(value)我需要按其整数值的降序排序,如果两个元素在哪里有相同的值,那么按键的升序.

一个让它更清晰的例子:

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)

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

Lev*_*sky 41

就像是

In [1]: d = {'banana': 3, 'orange': 5, 'apple': 5}

In [2]: sorted(d.items(), key=lambda x: (-x[1], x[0]))
Out[2]: [('apple', 5), ('orange', 5), ('banana', 3)]
Run Code Online (Sandbox Code Playgroud)

  • @Malavan x[1] 将是字典值。它被取反,以便较大的值出现在较小的值之前(降序) (4认同)