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

如何在Python嵌套字典中根据值获取外层字典的键?

根据嵌套字典内层值获取外层键的解决方法

你原来的代码失效原因很明确:valueList里的元素是完整的内层字典,不是单个值,所以用index('y')根本找不到目标内容。下面是几种实用的解决方法:

方法一:基础循环遍历

直接遍历外层字典的键与对应内层字典,检查目标值是否存在于内层字典的值集合中:

def get_outer_key(dictionary, target_val):
    for outer_key, inner_dict in dictionary.items():
        if target_val in inner_dict.values():
            return outer_key
    # 未找到时返回None,也可根据需求抛出异常
    return None

# 测试示例
dictionary = {
    1 : {'foo':'bar', 'boo':'car', 'moo':'jar'},
    2 : {'a':'x', 'b':'y', 'c':'z'},
    3 : {'do': 're', 'me': 'fa', 'so': 'la'}
}
print(get_outer_key(dictionary, 'y'))  # 输出:2

方法二:简洁生成器表达式

追求代码简洁的话,可以用生成器配合next()函数一行实现:

dictionary = {
    1 : {'foo':'bar', 'boo':'car', 'moo':'jar'},
    2 : {'a':'x', 'b':'y', 'c':'z'},
    3 : {'do': 're', 'me': 'fa', 'so': 'la'}
}

target = 'y'
result = next((k for k, v in dictionary.items() if target in v.values()), None)
print(result)  # 输出:2

额外说明

  • 如果有多个外层键对应的内层字典包含同一个目标值,上述方法只会返回第一个匹配的键。若要获取所有匹配键,可改用列表推导式:
    all_matching_keys = [k for k, v in dictionary.items() if target in v.values()]
    
  • 若能确保目标值一定存在,可去掉next()的第二个参数(未找到时会抛出StopIteration异常)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:12:04