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

Python中为何无法生成预期的字典列表?(含CSV代码对比)

为什么遍历字典无法生成预期的字典列表?

问题根源:Python字典的默认遍历行为

直接用for i in 字典循环时,Python默认只会迭代字典的键,而不是完整的键值对。所以你的第一段代码里,lst.append(i)实际上是把每个键(比如"Baja Taco")添加到列表里,自然得不到包含键值对的字典列表。

对比:csv.DictReader的迭代逻辑

csv.DictReader返回的迭代器,每次循环返回的i本身就是一个完整的字典——它把CSV的列名作为键,对应行的单元格内容作为值,所以直接append到列表里就能得到字典列表,和遍历普通字典的行为完全不同。

修正第一段代码的方法

要生成预期的字典列表,你需要遍历字典的键值对,然后为每一对创建一个新字典:

方法1:使用items()遍历键值对

Taqueria = {
    "Baja Taco": 4.25,
    "Burrito": 7.50,
    "Bowl": 8.50,
    "Nachos": 11.00,
    "Quesadilla": 8.50,
    "Super Burrito": 8.50,
    "Super Quesadilla": 9.50,
    "Taco": 3.00,
    "Tortilla Salad": 8.00
}
lst = []
for key, value in Taqueria.items():
    lst.append({key: value})
    
print(lst)

方法2:用列表推导式简化代码

Taqueria = {
    "Baja Taco": 4.25,
    "Burrito": 7.50,
    "Bowl": 8.50,
    "Nachos": 11.00,
    "Quesadilla": 8.50,
    "Super Burrito": 8.50,
    "Super Quesadilla": 9.50,
    "Taco": 3.00,
    "Tortilla Salad": 8.00
}
lst = [{key: value} for key, value in Taqueria.items()]
print(lst)

运行修正后的代码,就能得到你预期的输出:

[{"Baja Taco": 4.25},{"Burrito": 7.50},{"Bowl": 8.50},{"Nachos": 11.00},{"Quesadilla": 8.50},{"Super Burrito": 8.50},{"Super Quesadilla": 9.50},{"Taco": 3.00},{"Tortilla Salad": 8.00}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 08:00:22