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

如何从Python字典列表中提取仅含name键的字典子集?

修正代码实现与错误分析

原代码的问题

  • 遍历字典键值对时,直接写for k, v in dicts[i]不对,得用dicts[i].items()才能同时拿到键和值
  • 判断逻辑搞反了:要判断键k是不是'name',而不是dicts[i][k] == 'name'(这是拿值去和'name'对比,完全错误)
  • if语句末尾没加冒号:,属于语法错误,直接导致代码运行失败
  • res.append(dicts[i][k] = v)是错误写法,不能在append方法里做赋值操作,得先构造新字典再添加
  • 函数没有返回值,最后print出来的是None;而且使用全局变量res也不够规范

正确实现方式

方式一:基础循环(和原代码思路对齐)

def new_dict(dicts):
    res = []
    for item in dicts:
        # 直接取每个字典的'name'键,构造新字典加入结果列表
        res.append({'name': item['name']})
    return res

dicts = [
    {'name': 'Sam', 'age': 12},
    {'name': 'Pete', 'age': 14}, 
    {'name': 'Sarah', 'age': 16}
]

res = new_dict(dicts)
print(res)

方式二:列表推导式(更简洁的Python风格写法)

dicts = [
    {'name': 'Sam', 'age': 12},
    {'name': 'Pete', 'age': 14}, 
    {'name': 'Sarah', 'age': 16}
]

res = [{'name': item['name']} for item in dicts]
print(res)

两种方式运行后都会得到期望结果:

[{'name': 'Sam'}, {'name': 'Pete'}, {'name': 'Sarah'}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:25:32