按值的 INT 值对字典进行排序

Jui*_*icy 4 python sorting dictionary

这里有很多关于在 Python 中排序字典的帖子,所以我仔细阅读了它们,希望这不是重复的:

我正在使用字典将单词作为键并将单词的出现作为值。这导致字典可能是这样的:

John 1
Robert 5
Susie 15
Alex 6
Run Code Online (Sandbox Code Playgroud)

我想按出现次数(“值”)对它们进行排序

John 1
Robert 5
Alex 6
Susie 15
Run Code Online (Sandbox Code Playgroud)

我正在使用以下代码尝试像这样对我的字典进行排序:

sorted_words = sorted(words.iteritems(), key=itemgetter(1))
Run Code Online (Sandbox Code Playgroud)

然而,这将返回一个排序的元组列表,如下所示:

John 1
Susie 15
Robert 5
Alex 6
Run Code Online (Sandbox Code Playgroud)

您可以看到问题在于,使用上面的代码,值是“按字母顺序”排序的,因此 15 跟在 1 之后,即使数学上 15 > 5 和 6 等应该是最后一个。

如何修复代码以将值视为 INT 而不是字符串

Ste*_*ima 6

您必须在键表达式中将值转换为整数。用

sorted_words = sorted(words.iteritems(), key=lambda x: int(x[1]))
Run Code Online (Sandbox Code Playgroud)

尝试类似的东西可能很诱人key=int(itemgetter(1)),但这将不起作用,因为 key 参数需要一个函数。