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

如何在Python嵌套字典中根据值获取其父键?

如何在嵌套字典中查找指定键的父键?

先看给定的嵌套字典:

my_dict = {'a': {'spam': {'foo': None, 'bar': None, 'baz': None},'eggs': None}, 'b': {'ham': None}}

需求很明确:输入某个键,返回它的父键——比如查spam返回a,查bar返回spam,如果是顶层的键(比如b),就返回None。

直接写个递归函数就能解决,代码如下:

def find_parent_key(target, current_dict, parent_key=None):
    for key, value in current_dict.items():
        # 找到目标键,返回它的父键
        if key == target:
            return parent_key
        # 如果当前值是字典,递归进去找
        if isinstance(value, dict):
            result = find_parent_key(target, value, key)
            # 递归找到结果就直接返回
            if result is not None:
                return result
    # 遍历完没找到,返回None
    return None

测试一下:

my_dict = {'a': {'spam': {'foo': None, 'bar': None, 'baz': None},'eggs': None}, 'b': {'ham': None}}

print(find_parent_key('spam', my_dict))  # 输出: a
print(find_parent_key('bar', my_dict))   # 输出: spam
print(find_parent_key('b', my_dict))     # 输出: None
print(find_parent_key('ham', my_dict))   # 输出: b

这个函数的逻辑很简单:

  • 从顶层字典开始遍历,每进入下一层子字典,就把当前层的键当作父键传进去
  • 一旦碰到目标键,直接返回记录的父键;顶层键的父键是初始的None,正好符合要求
  • 如果在子字典里找到了结果,就层层往上返回这个结果;要是遍历完所有层级都没找到目标键,就返回None

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 16:55:19