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

如何正确获取OrderedDict中GROUP子元素的数量?

问题根源

两个字典中GROUP键对应的值类型完全不一致,是导致统计结果异常的核心原因:

  • dict1['CATALOG']['GROUP'] 为单个OrderedDict对象:
    调用len()时返回的是该OrderedDict内部的键数量,它包含ZONE、LIGHT、PLANT三个子键,所以返回3;遍历该对象时默认遍历字典的键,因此会输出三个子键的名称;由于字典没有数字索引,使用[0]访问会抛出KeyError。
  • dict2['CATALOG']['GROUP'] 为包含2个OrderedDict的列表:
    调用len()时返回的是列表的元素个数,所以返回2;遍历该对象时会依次取出列表中的每个GROUP节点,使用数字索引也能正常访问。

兼容处理方案

如果需要统一统计和遍历逻辑,可以先做类型判断,把单个GROUP的场景统一包装为列表:

from collections import OrderedDict

def get_group_list(catalog: OrderedDict) -> list:
    group_value = catalog['CATALOG']['GROUP']
    # 单个OrderedDict的场景包装为列表返回
    if isinstance(group_value, OrderedDict):
        return [group_value]
    # 已经是列表的场景直接返回
    return group_value

# 统计测试
print(len(get_group_list(dict1))) # 输出1,符合预期
print(len(get_group_list(dict2))) # 输出2,符合预期

# 遍历测试
for group in get_group_list(dict1):
    print(group) # 正确输出GROUP对应的OrderedDict对象

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:12:03