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

如何从嵌套字典提取指定条件的邮箱?能否避免双层循环?

无需两次迭代的实现方式

情况1:字典结构固定(顶层仅含"contacts"键)

既然明确要处理的是contacts下的联系人数据,完全可以跳过对x.values()的第一层迭代,直接定位到目标子字典,只用一次循环就能完成需求:

for contact_id, info in x["contacts"].items():
    if "Owner" in info["role"]:
        print(info["email"])

这种方式更直接高效,因为我们不需要遍历顶层所有值,直接访问已知的contacts键即可。

情况2:顶层存在多个同类结构的键

如果你的字典顶层可能有多个类似contacts的键(比如还有"employees"等同类结构),可以用itertools.chain把所有子字典的条目合并成一个可迭代对象,实现代码层面的单次循环:

from itertools import chain

# 合并所有顶层值对应的子字典条目
for contact_id, info in chain.from_iterable(v.items() for v in x.values()):
    if "Owner" in info["role"]:
        print(info["email"])

这里chain.from_iterable会把多个迭代器(每个顶层值的items())合并成一个,代码里只需要写一次for循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 00:45:32