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

如何正确使用itemgetter获取嵌套字典的键值?

使用itemgetter获取嵌套字典值的正确方式

你的代码报错是因为itemgetter("name", "en")的作用是从同一个字典层级中同时获取"name"和"en"两个键对应的值,而顶层字典里并没有"en"这个键,所以抛出KeyError。

要实现嵌套字典的取值,需要嵌套使用itemgetter,先获取子字典,再从子字典中取值:

方法一:分步调用itemgetter

from operator import itemgetter

dct = {"name": {"en": "John"}}
# 先获取name对应的子字典
get_name_dict = itemgetter("name")
# 再从子字典中获取en的值
get_en_value = itemgetter("en")

result = get_en_value(get_name_dict(dct))
print(result)  # 输出: John

方法二:合并为一个lambda表达式

如果想写成一行,可以用lambda把两个itemgetter的调用组合起来:

from operator import itemgetter

dct = {"name": {"en": "John"}}
getter = lambda d: itemgetter("en")(itemgetter("name")(d))

print(getter(dct))  # 输出: John

补充:支持任意深度嵌套的复用逻辑

如果需要多次处理不同深度的嵌套取值,可以封装成工具函数:

from operator import itemgetter
from functools import reduce

def nested_itemgetter(*keys):
    return lambda d: reduce(lambda obj, key: itemgetter(key)(obj), keys, d)

# 使用示例
dct = {"name": {"en": "John"}}
getter = nested_itemgetter("name", "en")
print(getter(dct))  # 输出: John

内容的提问来源于stack exchange,提问作者Альберт Александров

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:47:32