Python实现:基于MPN匹配CSV并填充Price与Stocks至目标文件
实现CSV字典匹配与字段填充的方法
核心思路
- 以
bottom_dic中的MPN为键,构建快速查找的映射字典,避免每次遍历全量数据,提升匹配效率 - 遍历
top_dic中的每条数据,通过MPN匹配映射字典,获取对应的Price和Stocks值 - 将匹配到的字段值填充回
top_dic后,写入原顶部CSV文件
具体代码实现
假设你的字典结构是列表套字典(每条数据对应CSV的一行,字段为字典键),示例结构如下:
top_dic = [ {"MPN": "ABC123", "产品名称": "XX手机"}, {"MPN": "DEF456", "产品名称": "XX耳机"} ] bottom_dic = [ {"MPN": "ABC123", "Price": "1999", "Stocks": "120"}, {"MPN": "GHI789", "Price": "299", "Stocks": "80"} ]
步骤1:构建MPN到Price/Stocks的映射
# 用字典推导式生成映射,key为MPN,value为包含目标字段的字典 mpn_map = {item["MPN"]: {"Price": item["Price"], "Stocks": item["Stocks"]} for item in bottom_dic}
步骤2:遍历top_dic填充字段
for item in top_dic: mpn = item["MPN"] # 匹配成功则填充字段,失败则设默认值(可根据需求调整) if mpn in mpn_map: item["Price"] = mpn_map[mpn]["Price"] item["Stocks"] = mpn_map[mpn]["Stocks"] else: item["Price"] = "" item["Stocks"] = ""
步骤3:将更新后的数据写入原CSV文件
使用csv.DictWriter保持原字段顺序:
import csv # 获取所有字段名(包含新增的Price和Stocks) fieldnames = top_dic[0].keys() with open("原顶部CSV文件路径.csv", "w", newline="", encoding="utf-8") as f: writer = csv.DictWriter(f, fieldnames=fieldnames) writer.writeheader() writer.writerows(top_dic)
注意事项
- 如果你的字典结构不是列表套字典(比如以行号为键),需先转换为列表形式再操作
- 确保两个字典中的MPN值格式一致(大小写、空格等),否则会匹配失败,可提前做标准化处理:
mpn.strip().upper() - 若原CSV没有Price和Stocks字段,写入前需手动将这两个字段添加到
fieldnames列表中
内容的提问来源于stack exchange,提问作者Raymond
相关产品推荐
相关产品推荐

