Python如何提取文本最长5个单词并按字母顺序排序
Python提取文本最长5单词并排序解决方案
问题根源
- 原代码
sorted仅指定key=len,长度相同的单词无明确排序规则,会跟随原列表的元素顺序变动导致每次输出结果不一致 - 第五个元素调用了未定义的
list_1变量,存在笔误 - 逐位取前5长单词的逻辑冗余,且未实现“取完最长5词后按字母序排序”的要求
正确实现代码
# 1. 先按长度降序、再按字母升序全局排序,固定相同长度单词的顺序,消除随机性 sorted_by_len = sorted(word_list, key=lambda x: (-len(x), x)) # 2. 提取最长的前5个单词,列表长度不足5时自动取全部存在的元素 top5_longest = sorted_by_len[:5] # 3. 将提取到的5个单词按字母顺序排序 top5_alphabet = sorted(top5_longest) # 按要求打印输出 for word in top5_alphabet: print(word)
逻辑说明
- 排序key使用
(-len(x), x):通过负长度值实现长单词优先排序,长度相同的单词直接按自身字母序排列,完全固定排序规则,不会出现每次运行结果不同的问题 - 若业务要求排除重复单词,可在排序前添加去重逻辑:
word_list = list(set(word_list))
内容的提问来源于stack exchange,提问作者Maria Thanou
相关产品推荐
相关产品推荐

