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

如何在Python中读取含重复条目的CSV并匹配字典中的对应值

修正Python CSV匹配代码以按订单顺序输出对应信息

你已经正确完成了从model.csv构建字典的部分,问题出在处理order.csv的逻辑上——当前代码是遍历models字典的键,而非遍历订单文件中的每一行记录,这就导致你既无法获取订单里的Quantity值,也没法保持order.csv的原有条目顺序。

下面是修正后的完整代码:

import csv
MODEL = 0
BRAND = 1
VERSION = 2

def main():
    models = model_numbers("model.csv", MODEL)
    # 保留原有的字典打印逻辑
    for i in models:
        print(i, models[i])
    # 处理order.csv的逻辑修正
    with open("order.csv") as order_file:
        reader = csv.reader(order_file)
        next(reader)  # 跳过表头
        # 遍历每一行订单记录,而非遍历models的键
        for row in reader:
            model_id = row[MODEL]
            quantity = row[1]  # 订单里的第二列是Quantity
            # 从models字典中获取对应的品牌和版本
            brand, version = models[model_id]
            # 按照要求格式输出
            print(f"{brand}: {quantity} {version}")

def model_numbers(filename, key):
    models = {}
    with open(filename, "rt") as models_file:
        reader = csv.reader(models_file)
        next(reader)
        for row in reader:
            model = row[MODEL]
            brand_name = row[BRAND]
            version = row[VERSION]
            models[model] = [brand_name, version]
    return models

if __name__ == "__main__":
    main()

关键修改点说明:

  • 把for key in models.keys()改成了for row in reader,这样就能逐行读取订单里的内容
  • 从每一行订单中提取Model #和Quantity字段(注意订单里的第二列索引是1)
  • 通过订单中的Model编号,从models字典中取出对应的品牌和版本,然后按要求格式拼接输出

运行这段代码后,输出就会和你期望的完全一致:

VB17 ['ASUS', '14.0']
AR51M ['ALIEN WARE', '15.5']
MAC12 ['APPLE', '13.7']
XR55 ['ACER', '17.1']
APPLE: 4 13.7
ALIEN WARE: 3 15.5
ACER: 1 17.1
APPLE: 2 13.7

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 01:47:26