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

如何修复Python中商品TXT文件价格升序排序无效问题?

商品价格升序排序修复方案

原函数存在的问题

  • 冗余操作:打开products.txt文件但未读取或使用,属于无效代码
  • 排序结果未复用:排序后得到的sorted_products没有传递给format_products,依然使用原未排序的products参数
  • 缩进错误:Python对缩进要求严格,原函数内代码缩进层级混乱,会导致语法错误
  • 潜在类型问题:若价格存储为字符串,直接排序会出现逻辑错误(比如字符串"158.0"和"2.0"排序结果不符合数值升序)

修复后的代码

def sort_price(products, addons):
    # 按价格升序排序,确保价格转为数值类型
    sorted_items = sorted(products.items(), key=lambda item: float(item[1][2]))
    # 将排序后的结果转为字典(适配原products的字典结构)
    sorted_products = dict(sorted_items)
    # 传递排序后的商品数据给格式化展示函数
    format_products(sorted_products)

额外补充(若需从文件重新加载数据)

如果需要每次排序都从products.txt读取最新数据,可补充文件读取逻辑,同时处理字段内的多余空格:

def sort_price(products, addons):
    # 从文件重新读取并解析商品数据
    products = {}
    with open("products.txt", "r") as infile:
        for line in infile:
            line = line.strip()
            if not line:
                continue
            prod_id, name, category, price, status = line.split(",")
            # 去除字段中可能存在的多余空格
            category = category.strip()
            products[prod_id] = [name, category, float(price), status]
    # 按价格升序排序
    sorted_items = sorted(products.items(), key=lambda item: item[1][2])
    sorted_products = dict(sorted_items)
    format_products(sorted_products)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:42:30