如何按字符串列表各元素3位后缀的出现频次对列表排序?
4位长度单词按后3位后缀频次排序方案
需求规则
- 待处理词池内的单词全部为4个字母长度
- 排序依据:取每个单词的最后3位作为统计后缀,计算每个后缀的出现频次,按照频次从高到低排列单词
- 频次相同的后缀对应的单词,相对排列顺序无强制要求,可任意排布
示例
输入
wordPool = ['beat','neat','food','good','mood','wood','bike','like','mike']
预期输出
['food','good','mood','wood','bike','like','mike','beat','neat']
实现方法
思路
- 先遍历所有单词,用切片
word[-3:]截取每个单词的后3位后缀,统计每个后缀的出现次数 - 排序时将单词对应后缀的频次作为排序键,做降序排列即可
可运行代码
from collections import Counter wordPool = ['beat','neat','food','good','mood','wood','bike','like','mike'] # 统计所有3位后缀的出现频次 suffix_count = Counter(word[-3:] for word in wordPool) # 按后缀频次降序排序 result = sorted(wordPool, key=lambda item: suffix_count[item[-3:]], reverse=True) print(result)
结果说明
运行代码得到的输出和预期完全一致,排序逻辑对应:
- 后缀
ood共出现4次(对应food、good、mood、wood),频次最高,排在最前 - 后缀
ike共出现3次(对应bike、like、mike),频次次之,排在中间 - 后缀
eat共出现2次(对应beat、neat),频次最低,排在最后
内容的提问来源于stack exchange,提问作者eddie kan
相关产品推荐
相关产品推荐

