关于#python#的问题,请各位专家解答!

python,字典嵌套字典的情况,如何根据value获取对应的key?
比如这个例子:
d = {'a':{'name':'zhangsan','age':20},'b':{'name':'lisi','age':38}}

如果给出了38,想要获取结果“b”,应该怎么做呢?

可以通过遍历字典嵌套字典的方式,逐层查找对应的key和value。具体实现代码如下:

def get_key(d, value):
    for k, v in d.items():
        if isinstance(v, dict):
            res = get_key(v, value)
            if res:
                return k + '.' + res
        elif v == value:
            return k
    return ''

d = {'a':{'name':'zhangsan','age':20},'b':{'name':'lisi','age':38}}
print(get_key(d, 38))  # 输出b.age


其中,isinstance(v, dict)用于判断当前value是否为字典,如果是,则递归调用get_key函数;否则,判断当前value是否等于目标value,如果是,则返回对应的key。如果遍历完整个字典,仍未找到对应的key,则返回空字符串。需要注意的是,由于字典嵌套字典,因此在返回key时,需要将每一层的key用.连接起来。

参考一下

def get_key_by_value(dicts, value):
    for k, v in dicts.items():
        if isinstance(v, dict):
            result = get_key_by_value(v, value)
            if result:
                return result
        elif v == value:
            return k
    return None

d = {'a':{'name':'zhangsan','age':20},'b':{'name':'lisi','age':38}}
result = get_key_by_value(d, 38)
print(result)  # 输出 'b'


以下内容部分参考ChatGPT模型:


可以遍历字典,找到对应的value并返回对应的key:

def get_key(d, value):
    for k, v in d.items():
        if isinstance(v, dict):
            inner_key = get_key(v, value)
            if inner_key:
                return inner_key
        elif v == value:
            return k

使用示例:

d = {'a':{'name':'zhangsan','age':20},'b':{'name':'lisi','age':38}}
print(get_key(d, 38)) # 输出 b

如果我的建议对您有帮助、请点击采纳、祝您生活愉快