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

Python从嵌套字典提取指定值生成元组时遇类型错误

解决嵌套字典提取valueDX元素的错误问题

给定如下嵌套字典:

structure = {
    'key1' : {'keyA' : 'valueA1', 'keyB' : {'keyC' : 'valueC1', 'keyD': 'valueD1'}},
    'key2' : {'keyA' : 'valueA2', 'keyB' : {'keyC' : 'valueC2', 'keyD': 'valueD2'}},
    'key3' : {'keyA' : 'valueA3', 'keyB' : {'keyC' : 'valueC3', 'keyD': 'valueD3'}}
}

需要提取所有valueD1、valueD2、valueD3元素组成元组,但你写的代码触发了TypeError: 'dict_keys' object is not subscriptable错误,下面是问题原因和解决办法:

错误原因

你写的x['keyB'].values()是获取keyB对应字典的所有值,返回的是dict_values对象——这是一个值的集合视图,不是字典本身,自然不能用['keyD']这种下标方式访问。你要的是keyB字典里keyD对应的具体值,直接通过键访问就行,完全不需要调用.values()。

正确实现

方式一:修正原循环代码

my_list = []
for x in structure.values():
    # 直接从keyB字典中取keyD对应的值
    my_list.append(x['keyB']['keyD'])
# 把列表转成元组
result = tuple(my_list)
print(result)  # 输出:('valueD1', 'valueD2', 'valueD3')

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

如果想更简洁,一步到位生成元组:

result = tuple(x['keyB']['keyD'] for x in structure.values())
print(result)  # 输出:('valueD1', 'valueD2', 'valueD3')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 05:01:39