我有一本字典,里面存储了单词和它们的频率。我需要从这本字典中获得一个排序的列表。单词应该按照文本中出现的次数的降序进行排序,并以相同的出现频率进行排序-按照词典顺序。我使用以下代码:
for items, quantity in sorted(D.items(), key=itemgetter(1,0), reverse=True):
print(items, quantity)它会生成以下输出:
damme 4
van 3
name 3
is 3
my 2
hi 2
claude 2
bond 2
your 1
what 1
jean 1
james 1单词按文本中出现次数的降序进行正确排序,但出现次数相同的单词按其相反的字典序排序。我该如何解决这个问题呢?
发布于 2015-02-20 20:27:16
不使用reverse=True,而是返回负数:
sorted(D.items(), key=lambda i: (-i[1], i[0]))因为-4在-3之前排序。对于ties,然后使用键的正向字典序排序。
演示:
>>> D = {'hi': 2, 'jean': 1, 'bond': 2, 'my': 2, 'what': 1, 'damme': 4, 'van': 3, 'claude': 2, 'name': 3, 'james': 1, 'your': 1, 'is': 3}
>>> for item, quantity in sorted(D.items(), key=lambda i: (-i[1], i[0])):
... print(item, quantity)
...
damme 4
is 3
name 3
van 3
bond 2
claude 2
hi 2
my 2
james 1
jean 1
what 1
your 1https://stackoverflow.com/questions/28628954
复制相似问题