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

如何关联文件中两列数字,排序第二列后映射回对应第一列值?

解决方案:关联文件两列数据并按第二列排序后获取对应第一列值

当然可以实现,核心是把每一行的两个数值绑定在一起存储,而不是只单独保存第二列。以下是具体实现方案:

核心思路

  • 读取文件时,将每行的第一列编号和第二列电阻值以元组形式存入列表,持续保持两者的关联关系
  • 对存储元组的列表按电阻值完成排序
  • 从排序后的元组中提取编号,得到最终需要的结果

修改后的代码实现

with open("file.txt") as file_in:
    resistance_pairs = []
    for line in file_in:
        # 跳过文件中的空行,避免分割操作出错
        stripped_line = line.strip()
        if not stripped_line:
            continue
        # 分割每行数据并转换为整数类型
        id_num, resistance = map(int, stripped_line.split())
        # 存储为(电阻值, 编号)的元组,方便后续按电阻值排序
        resistance_pairs.append( (resistance, id_num) )

# 按电阻值从小到大排序元组列表
sorted_pairs = sorted(resistance_pairs)

# 提取排序后的编号列表(即替换为对应第一列值)
sorted_ids = [pair[1] for pair in sorted_pairs]

# 验证输出结果
print("排序后的电阻值对应编号:", sorted_ids)

关键细节说明

  • 元组绑定数据:元组是不可变序列,能稳定保持两个值的关联关系,排序过程中不会打乱对应关系
  • 优化排序效率:原代码在每次循环内重复执行排序操作,效率极低,修改后仅在所有数据读取完成后排序一次
  • 处理空行异常:文件中的空白行可能导致split()操作报错,加入空行判断可以避免这类异常

如果需要按电阻值从大到小排序,只需给sorted方法添加reverse=True参数即可:

sorted_pairs = sorted(resistance_pairs, reverse=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:50:32