如何修复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
相关产品推荐
相关产品推荐

