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

如何获取并修改Python嵌套字典的值?现有代码存在遍历缺陷

修改嵌套字典中所有内层字典的值为指定值

我来帮你搞定这个问题——你的核心问题在于原代码错误地依赖了「键是连续整数」这个假设,而实际上内层字典的键可以是任意间隔的数值,甚至非整数类型。我们先分析原代码的问题,再给出正确的解决方案。

原代码的问题

你的代码存在两个关键问题:

  • 全局的counter变量会被前一个内层字典的处理状态影响,导致后续内层字典的键无法被完整遍历。比如处理完'test'后counter变成4,再处理'this'时会直接从4开始查找,逻辑冗余且容易遗漏键。
  • 代码里的anotherKey变量完全没被使用,属于冗余代码。

正确的解决方案

我们只需要直接遍历每个内层字典的所有键,不管键是什么值,都把对应的值改成指定值就行。这里提供两种简洁的实现方式:

方式一:直接修改原字典(原地修改)

这种方式会直接在原来的字典上修改值,不需要生成新字典:

x = {'test': {1: 2, 2: 4, 3: 5}, 'this': {1: 2, 2: 3, 7: 6}, 'is': {1: 2}, 'something': {90: 2, 92: 3}}

# 定义要设置的目标值
target_value = 100

# 遍历外层字典的每个键和对应的内层字典
for outer_key, inner_dict in x.items():
    # 遍历内层字典的所有键
    for inner_key in inner_dict:
        inner_dict[inner_key] = target_value

print(x)

运行结果:

{'test': {1: 100, 2: 100, 3: 100}, 'this': {1: 100, 2: 100, 7: 100}, 'is': {1: 100}, 'something': {90: 100, 92: 100}}

方式二:用字典推导式生成新字典

如果你更倾向于生成新字典而不是修改原字典,可以用嵌套的字典推导式,代码更简洁:

x = {'test': {1: 2, 2: 4, 3: 5}, 'this': {1: 2, 2: 3, 7: 6}, 'is': {1: 2}, 'something': {90: 2, 92: 3}}

target_value = 100

# 嵌套推导式:外层保留原键,内层每个键对应的值设为目标值
x = {outer_k: {inner_k: target_value for inner_k in inner_dict} for outer_k, inner_dict in x.items()}

print(x)

这个代码的运行结果和方式一完全一致。

为什么这两种方式可行?

这两种方法都不依赖键的连续性或具体类型,不管内层字典的键是连续整数、间隔很大的整数,甚至是字符串等其他类型,都能准确修改所有值。而且逻辑清晰,不会出现原代码中因为counter状态导致的遗漏问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:43:49