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

如何使用deque遍历嵌套字典,获取示例中的Hello World!值?

嘿,这个需求很典型嘛,我给你分享两种靠谱的实现方式,都是利用deque里的键列表逐层穿透嵌套字典~

方法1:循环迭代deque的键

这是最直观的写法,逻辑清晰,新手也能一眼看懂。我们只需要用一个变量跟踪当前访问的字典层级,然后依次取出deque里的每个键,一步步深入嵌套结构就行。

代码示例:

from collections import deque

# 定义你的嵌套字典和deque实例
nested_dict = {"a": {"b": {"c": "Hello World!"}}}
key_queue = deque(["a", "b", "c"])

current_dict = nested_dict
for key in key_queue:
    current_dict = current_dict[key]

print(current_dict)  # 输出: Hello World!

简单解释:current_dict一开始指向最外层的字典,每循环一次就用deque里的键“钻”到下一层,等所有键都遍历完,current_dict就刚好是我们要的目标值了。

方法2:用functools.reduce简化代码

如果你喜欢更简洁的写法,reduce函数可以帮你把循环逻辑浓缩成一行。它会自动把访问字典的操作依次应用在deque的每个键上。

代码示例:

from collections import deque
from functools import reduce

nested_dict = {"a": {"b": {"c": "Hello World!"}}}
key_queue = deque(["a", "b", "c"])

result = reduce(lambda current, key: current[key], key_queue, nested_dict)
print(result)  # 输出: Hello World!

简单解释:reduce的第一个参数是个lambda函数,负责接收当前字典层级和键,返回下一层字典;第二个参数是我们的deque(它是可迭代对象,直接能用);第三个参数是初始值——也就是最外层的字典。整个过程和循环逻辑完全一致,只是写法更紧凑。

小提示:处理键不存在的情况

如果deque里的某个键在对应层级的字典中不存在,上面两种方法都会抛出KeyError。要是想让代码更健壮,可以加个异常处理或者用dict.get():

current_dict = nested_dict
for key in key_queue:
    current_dict = current_dict.get(key)
    if current_dict is None:
        break

if current_dict:
    print(current_dict)
else:
    print("警告:某个键不存在,无法获取目标值!")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:38:45