You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中按第2、3个或指定位置单词对句子列表按字母排序

Python 按句子指定位置单词排序列表的实现方法

效果示例:
输入:["The efgh ijk", "The abcd efgh", "The aab xyz"]
按第2个单词排序输出:["The aab xyz", "The abcd efgh", "The efgh ijk"]

基础实现

直接使用Python内置的sorted()函数,通过lambda表达式定义排序key即可:

input_list = ["The efgh ijk", "The abcd efgh", "The aab xyz"]
# 按第2个单词排序,自然语言计数的第n个单词对应索引为n-1
sorted_list = sorted(input_list, key=lambda s: s.split()[1])
print(sorted_list)
# 输出:['The aab xyz', 'The abcd efgh', 'The efgh ijk']

通用可配置版本

可以封装为通用函数,支持指定任意位置的单词作为排序依据,同时兼容句子单词数不足的边界场景:

def sort_by_nth_word(sentence_list, nth, default_key="", reverse=False, case_sensitive=True):
    """
    按句子的第n个单词对列表进行排序
    :param sentence_list: 待排序的句子列表
    :param nth: 排序依据的单词位置,从1开始计数
    :param default_key: 句子单词数不足nth时使用的默认排序值
    :param reverse: 是否按降序排列,默认False为升序
    :param case_sensitive: 是否区分大小写排序,默认True区分
    """
    def get_sort_key(s):
        words = s.split()
        if len(words) >= nth:
            key = words[nth-1]
        else:
            key = default_key
        return key if case_sensitive else key.lower()
    return sorted(sentence_list, key=get_sort_key, reverse=reverse)

# 调用示例
input_list = ["The efgh ijk", "The abcd efgh", "The aab xyz"]
output = sort_by_nth_word(input_list, nth=2)
print(output)

注意事项

  • 单词默认按任意空白字符分割,如果需要按指定分隔符(如单个空格、制表符)分割,可以调整split()的入参,例如按单个空格分割用split(" ")
  • 如果需要忽略大小写排序,设置case_sensitive=False即可
  • 单词数不足指定位置的句子默认排在最前面,可通过修改default_key调整排序优先级

内容的提问来源于stack exchange,提问作者Tanvir Ahmmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 12:57:03