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

Python3修改字典列表键值 实现CSV读取结果转目标数据结构

你无需调整CSV读取逻辑,对已得到的goodies字典列表做转换即可实现需求,另外注意你提供的读取示例代码存在笔误:使用csv.DictReader时应该遍历reader对象而非原始文件对象,否则无法直接得到结构化的字典行。

转换已有goodies得到目标结构

直接遍历goodies每个元素,提取水果名作为键,将price和amount转为整数后组成列表作为值,逐个加入结果列表即可:

fruit = []
for item in goodies:
    fruit_name = item['fruit']
    num_list = [int(item['price']), int(item['amount'])]
    fruit.append({fruit_name: num_list})

运行后即可得到你需要的结构:

[{'apple': [1, 2]}, {'banana': [3, 4]}, {'kiwi': [5, 6]}]

更适合值匹配的优化结构

你提到后续需要通过[5,6]匹配对应的水果名,其实更建议生成「数值对映射水果名」的字典结构,无需遍历列表查找,匹配效率更高:

value_to_fruit = {}
for item in goodies:
    match_key = (int(item['price']), int(item['amount']))
    value_to_fruit[match_key] = item['fruit']

匹配时直接调用即可:

# 匹配[5,6]
target = [5,6]
print(value_to_fruit.get(tuple(target))) # 输出kiwi

读取阶段直接生成目标结构(可选)

如果你不需要保留原始的goodies结构,可以直接修改读取逻辑,在读取CSV的同时生成你需要的结构,省去二次转换的步骤:

import csv

fruit = []
value_to_fruit = {}
with open('你的csv文件路径') as file:
    reader = csv.DictReader(file)
    for row in reader:
        # 生成目标列表结构
        fruit.append({row['fruit']: [int(row['price']), int(row['amount'])]})
        # 生成方便匹配的映射结构
        value_to_fruit[(int(row['price']), int(row['amount']))] = row['fruit']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:45:06