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

如何用Python优雅更新多层字典中含指定键的子项?

优雅实现嵌套字典的age值更新

先看你的原始数据:

employee_data = {
    'peter': {'age': 28, 'department': 3857},
    'helga': {'department': 57, 'occupancy': 'graphics'},
    'eugene': {'age': 48, 'department': 12, 'role': 'teamlead'}
}

方法1:字典推导式生成新字典(不修改原数据)

如果不想改动原字典,用字典推导式一行就能搞定,简洁又清晰:

updated_data = {
    name: {'age': 30, **details} if 'age' in details else details
    for name, details in employee_data.items()
}

这里用**details展开原子字典的所有键值对,再用'age':30覆盖原有age值(如果存在),其他键值对完全保留。

方法2:原地修改原字典(生成器表达式配合遍历)

要是想直接修改原字典,用生成器表达式过滤出包含age的子字典,再批量更新:

for details in (d for d in employee_data.values() if 'age' in d):
    details['age'] = 30

生成器表达式只会筛选出符合条件的子字典,遍历过程中直接修改,比嵌套循环+判断的写法更紧凑。

方法3:map函数实现(简洁但可读性稍弱)

追求极致简洁的话,也可以用map配合lambda,但可读性不如前两种,仅作参考:

list(map(lambda d: d.update({'age':30}) if 'age' in d else None, employee_data.values()))

需要用list触发迭代执行,因为map返回的是迭代器,不遍历不会生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 14:12:19