这里有很多关于用Python对字典进行排序的帖子,所以我仔细阅读了它们,希望这不是重复的:
我用字典把单词作为键,把单词的出现作为值。这就产生了一个字典,可以是:
John 1
Robert 5
Susie 15
Alex 6
我想按出现次数对它们进行排序(“值”)
^{pr2}$我正在使用以下代码尝试按如下方式对词典进行排序:
sorted_words = sorted(words.iteritems(), key=itemgetter(1))
但是,这将返回一个排序后的元组列表,如下所示:
John 1
Susie 15
Robert 5
Alex 6
您可以看到问题是,对于上面的代码,这些值是按字母顺序排序的,因此15跟在1后面,即使数学上15>;5和6等等应该是最后一个。在
如何修复代码以将值视为int而不是字符串
如果你在寻找按出现次数排序的单词,你真的希望使用一个
Counter
,这基本上是一个预先构建的直方图,它将为你处理所有这些,甚至允许你调用函数most_common
来从字典中获取最常见的元素。在如果由于某种原因,这不适合您的应用程序,您可以(正如其他人所建议的那样),对字典进行如下排序:
^{pr2}$但是
Counter
似乎更适合您的应用程序。在必须在键表达式中将值转换为整数。使用
尝试类似
key=int(itemgetter(1))
的方法可能很诱人,但这行不通,因为key参数需要一个函数。在对于这种事,我倾向于
上面假设
^{pr2}$words
中的值确实是数字。如果不是这样的话,我会的(在最后一个表达式中使用
float
而不是int
的原因很简单:即使值开始包含浮点数,代码也保持不变。)相关问题 更多 >
编程相关推荐