按值对字典键进行排序,然后按字母顺序排列具有相同值的键

Cha*_*dle 4 python sorting dictionary

我知道标题中没有很好地解释它,所以我会在这里尝试做得更好。我想按各自的值对字典的键进行排序,然后按字母顺序对具有相同值的任何键进行排序。最好的方法是什么,最好不使用模块?

python 是否会自动执行此操作,例如:

sorted(dictionary.items(), key=lambda x: x[1])
Run Code Online (Sandbox Code Playgroud)

我尝试了上面的代码,它似乎有效,但我不知道这是否只是巧合。我在文档中找不到任何内容,我需要知道它是否总是有效。

起始字典:

dictionary = {'d':2, 'c':1, 'a':2, 'b':3}
Run Code Online (Sandbox Code Playgroud)

按值排序:

['c', 'd', 'a', 'b']
Run Code Online (Sandbox Code Playgroud)

(1, 2, 2, 3)

具有相同值的项目按字母顺序排序:

['c', 'a', 'd', 'b']
Run Code Online (Sandbox Code Playgroud)

(1, 2, 2, 3)

mgi*_*son 6

我认为你想要:

sorted(dictionary.items(), key=lambda t: t[::-1])
Run Code Online (Sandbox Code Playgroud)

这与:

def reverse_tuple(t):
    return t[::-1]

sorted(dictionary.items(), key=reverse_tuple)
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为元组是按字典顺序排序的。比较第一个元素,如果它们相等,python 移动到第二个,依此类推。

这几乎是sorted(dictionary.items())不幸的,然后您的主要排序顺序由元组中的第一个元素(即键)决定,这不是您想要的。诀窍是只需反转元组,然后比较就可以按照您的需要进行。