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

如何判断嵌套字典内列表中的值是否存在?以检测‘Anna’为例

嘿,我来帮你搞定这两个字典相关的问题,结合你给的示例数据一步步拆解:

问题1:判断嵌套字典中的列表内是否存在某个值

因为你的数据是嵌套结构(外层字典套内层字典,内层字典里还有列表),所以得逐层遍历检查。这里有两种思路,按需选择:

通用版:检查所有列表类型的值

如果你不确定目标值会出现在哪个列表字段里,可以用这个通用方法,遍历所有嵌套结构里的列表,判断目标值是否存在:

data = {"Pam": {"Job":"Pilot", "YOB": "1986", "Children": ["Greg", "Anna","Sima"]}, "Joe": {"Job":"Engineer", "YOB": "1987"}}

def is_value_in_nested_list(target, data_dict):
    # 遍历外层字典的每个用户信息
    for person_details in data_dict.values():
        # 遍历用户信息里的每个值,检查是不是列表
        for val in person_details.values():
            if isinstance(val, list) and target in val:
                return True
    # 遍历完都没找到,返回False
    return False

# 测试示例
print(is_value_in_nested_list("Anna", data))  # 输出 True
print(is_value_in_nested_list("Bob", data))   # 输出 False

高效版:针对已知的列表字段

如果你明确知道目标值只会出现在Children这个列表里,可以直接定位这个字段,不用遍历所有值,效率更高:

def is_value_in_children(target, data_dict):
    for person_details in data_dict.values():
        # 先检查当前用户有没有Children字段,再判断目标值在不在列表里
        if "Children" in person_details and target in person_details["Children"]:
            return True
    return False

print(is_value_in_children("Anna", data))  # 输出 True
问题2:检测字典中是否存在‘Anna’

这里得分两种场景来看:

场景1:检查‘Anna’是否是字典的键(即是否有叫Anna的用户)

直接用in关键字判断外层字典的键即可:

has_anna_as_user = "Anna" in data
print(has_anna_as_user)  # 输出 False,因为你的示例里外层键只有Pam和Joe

场景2:检查‘Anna’是否作为值存在(比如在Children列表里)

这其实就是问题1的场景,直接用上面的两个函数就行。如果要快速验证,也可以写一行简洁的代码:

has_anna_as_value = any("Anna" in details.get("Children", []) for details in data.values())
print(has_anna_as_value)  # 输出 True

这行代码的逻辑是:遍历每个用户的信息,用get方法安全获取Children列表(没有的话返回空列表),然后判断"Anna"是否在列表里,只要有一个满足就返回True。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:32:47