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

嵌套字典扁平化输出为元组列表时触发AttributeError问题求助

问题原因

你之前的写法未对字典值的类型做判断,统一调用items()方法,布尔、字符串等非字典类型没有该属性,因此触发AttributeError。

可行实现方案

1. 易读的循环实现

dict1 = {
    'conf1' : {'subconf11' : True, 'subconf12' : False}, 
    'conf2' : False, 
    'conf3' : {'subconf31' : True, 'subconf32' : False, 'subconf33' : False}, 
    'conf4' : 'On'
}

list1 = []
for primary_key, primary_val in dict1.items():
    # 判断当前值是否为字典类型
    if isinstance(primary_val, dict):
        # 遍历子字典的键值对,组装对应元组
        for sub_key, sub_val in primary_val.items():
            list1.append((primary_key, (sub_key, sub_val)))
    else:
        # 非字典类型直接组装元组
        list1.append((primary_key, primary_val))

print(list1)

输出完全匹配预期:

[('conf1', ('subconf11', True)), ('conf1', ('subconf12', False)), ('conf2', False), ('conf3', ('subconf31', True)), ('conf3', ('subconf32', False)), ('conf3', ('subconf33', False)), ('conf4', 'On')]

2. 简洁的列表推导式实现

list1 = [entry for key, val in dict1.items() for entry in 
         ([(key, (k, v)) for k, v in val.items()] if isinstance(val, dict) else [(key, val)])]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:45:03