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

Python中sort()与sorted()处理CSV链接列排序异常原因求解

失效原因

你的排序方法失效的核心原因是第0列的链接存在重复值,Python列表的index()方法只会返回匹配元素第一次出现的索引位置:

  • 当多个行的链接相同时,tmp.index(k)对这些重复链接都会返回第一个相同链接所在的行号,导致这些行对应的排序key都是第一个重复行的第2列数值
  • 排序时所有重复链接的排序key完全一致,自然无法按原始的第2列序号排序,仅会把相同链接聚集到一起,和你看到的现象完全吻合。

你之前处理其他表格时方法生效,是因为此前的链接列没有重复值,index()可以准确拿到每个链接对应的行号。

高效解决方法

你可以直接将链接和对应的排序序号绑定后排序,既规避了重复值问题,效率也远高于你之前的O(n²)写法,甚至比pandas的sort_values在中小数据量下更快:

import pandas as pd

entities = pd.read_csv("24142265_0_4577466141408796359.csv", header=None)
# 直接按第2列排序后提取第0列链接
entitiesUri = [uri for _, uri in sorted(zip(entities[2].astype(int), entities[0]))]

如果不需要保留pandas依赖,直接用Python标准库读csv速度还能更快:

import csv

with open("24142265_0_4577466141408796359.csv", "r", encoding="utf-8") as f:
    reader = csv.reader(f)
    # 每行结构是[链接, 标签, 序号],按序号转int后排序,提取链接
    entitiesUri = [row[0] for row in sorted(reader, key=lambda x: int(x[2]))]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:45:03