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

Python排序函数失效问题:如何按数字排序并保留词数对应关系

问题分析与解决

你的代码核心问题是拆分方式错误:message.split()会把所有内容按空格拆成单个元素的列表,导致数字和对应的单词完全分离,没法绑定在一起排序。所以不管怎么调sort的key,都没法实现数字和单词配对排序的效果。

修正步骤

  • 按行读取配对:先把文件内容按行拆分,每一行对应一组「数字+单词」,保证两者绑定。
  • 转换数据类型:把每一行的数字字符串转成整数,确保排序时按数值大小(而非字符串字典序)排列。
  • 正确排序配对:对绑定好的「数字+单词」元组列表,按数字排序。
  • 按需展开结果:如果需要扁平列表格式,再把排序后的元组逐个展开。

修正后的代码

def decode(message_file):
    decoded_message = []
    
    # 按行读取文件内容
    with open(message_file, 'r') as file:
        lines = file.readlines()
    
    # 处理每一行,生成(数字, 单词)的元组列表
    pairs = []
    for line in lines:
        # 去掉每行末尾的换行符,再拆分数字和单词
        num_str, word = line.strip().split()
        # 把数字转成整数,确保排序是按数值来的
        pairs.append((int(num_str), word))
    
    # 按数字从小到大排序
    pairs.sort(key=lambda x: x[0])
    
    # 展开成扁平列表格式
    flattened = []
    for item in pairs:
        flattened.append(str(item[0]))
        flattened.append(item[1])
    
    print(flattened)

decode("test.txt")

输出结果

运行后会得到正确排序的输出:

['1', 'I', '2', 'dogs', '3', 'love', '4', 'cats', '5', 'you', '6', 'computers']

内容的提问来源于stack exchange,提问作者Eric Fascetti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 17:04:52