首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python 3排序设置

Python 3排序设置
EN

Stack Overflow用户
提问于 2015-02-20 20:24:35
回答 1查看 75关注 0票数 0

我有一本字典,里面存储了单词和它们的频率。我需要从这本字典中获得一个排序的列表。单词应该按照文本中出现的次数的降序进行排序,并以相同的出现频率进行排序-按照词典顺序。我使用以下代码:

代码语言:javascript
运行
复制
for items, quantity in sorted(D.items(), key=itemgetter(1,0), reverse=True):
    print(items, quantity)

它会生成以下输出:

代码语言:javascript
运行
复制
damme 4
van 3
name 3
is 3
my 2
hi 2
claude 2
bond 2
your 1
what 1
jean 1
james 1

单词按文本中出现次数的降序进行正确排序,但出现次数相同的单词按其相反的字典序排序。我该如何解决这个问题呢?

EN

回答 1

Stack Overflow用户

发布于 2015-02-20 20:27:16

不使用reverse=True,而是返回负数:

代码语言:javascript
运行
复制
sorted(D.items(), key=lambda i: (-i[1], i[0]))

因为-4-3之前排序。对于ties,然后使用键的正向字典序排序。

演示:

代码语言:javascript
运行
复制
>>> 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 1
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28628954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档