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

Python多层字典中子键的批量取值及求和方法问询

多层嵌套字典的取值与求和技巧

针对你给出的嵌套字典,以下是几种简便的取值和求和方法:

一、获取指定子键的所有值

1. 取'White'-'Cats'的所有值

直接通过键层级访问到目标字典,再调用values()方法就能拿到所有值:

# 定位到Cats下的White字典,提取所有值
white_cats_values = dict['Cats']['White'].values()
print(list(white_cats_values))  # 输出: [5, 6]

2. 取所有'Dogs'对应的值

Dogs下是两层嵌套,用列表推导式可以简洁收集所有值:

dogs_values = [val for color_dict in dict['Dogs'].values() for val in color_dict.values()]
print(dogs_values)  # 输出: [9, 1, 2, 3]

如果习惯循环写法也可以:

dogs_values = []
for color_dict in dict['Dogs'].values():
    dogs_values.extend(color_dict.values())
print(dogs_values)  # 输出: [9, 1, 2, 3]

二、对指定子键的值求和

直接用sum()函数配合上面的取值方式即可:

1. 'White'-'Cats'的值求和

sum_white_cats = sum(dict['Cats']['White'].values())
print(sum_white_cats)  # 输出: 11

2. 'Dogs'所有值求和

用生成器表达式配合sum,不用额外存列表,更省内存:

sum_dogs = sum(val for color_dict in dict['Dogs'].values() for val in color_dict.values())
print(sum_dogs)  # 输出: 15

三、通用工具函数(适配更深嵌套)

如果你的字典嵌套层级不固定,可以写个通用函数递归收集值,复用性更强:

def get_nested_values(nested_dict, keys):
    # 先定位到目标层级
    current = nested_dict
    for key in keys:
        current = current[key]
    # 递归收集所有值
    def collect(d):
        for v in d.values():
            if isinstance(v, dict):
                yield from collect(v)
            else:
                yield v
    return list(collect(current))

# 示例用法
print(get_nested_values(dict, ['Cats', 'White']))  # [5, 6]
print(get_nested_values(dict, ['Dogs']))  # [9, 1, 2, 3]
print(sum(get_nested_values(dict, ['Dogs'])))  # 15

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 20:22:21