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

如何不使用itemgetter、lambda或pandas将代码改为sort()排序函数?

解决方案

首先修正原代码里的缩进错误:读取CSV的循环必须放在with代码块内部,否则文件关闭后无法迭代reader对象。

针对排序需求,我们可以自定义一个简单函数替代itemgetter(0),这个函数仅返回列表的第一个元素作为排序依据,完全符合「不使用itemgetter、lambda或pandas」的要求:

def get_sort_key(item):
    return item[0]

之后即可用这个函数作为排序的key参数,既可以用sorted()生成新列表,也可以用列表的sort()方法原地排序(更节省内存)。

修改后的完整代码如下:

import csv

mfl = []
prl = []
sdl = []

# 自定义排序用的key函数
def get_sort_key(item):
    return item[0]

# 读取ManufacturerList.csv,修正缩进
with open("ManufacturerList.csv") as manlist:
    ml = csv.reader(manlist)
    for line in ml:
        mfl.append(line)

# 读取PriceList.csv,修正缩进
with open("PriceList.csv") as pricelist:
    pl = csv.reader(pricelist)
    for line in pl:
        prl.append(line)

# 读取ServiceDatesList.csv,修正缩进
with open("ServiceDatesList.csv") as sdlist:
    sl = csv.reader(sdlist)
    for line in sl:
        sdl.append(line)

# 方式1:用sorted生成新排序后的列表
new_mfl = sorted(mfl, key=get_sort_key)
new_prl = sorted(prl, key=get_sort_key)
new_sdl = sorted(sdl, key=get_sort_key)

# 方式2:使用list.sort()原地排序(无需生成新列表,更高效)
# mfl.sort(key=get_sort_key)
# prl.sort(key=get_sort_key)
# sdl.sort(key=get_sort_key)
# 后续直接使用mfl、prl、sdl即可

# 合并数据(注意:需使用排序后的new_prl,否则数据对应会出错)
for x in range(len(new_mfl)):
    new_mfl[x].append(new_prl[x][1])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:56:04