python,字典嵌套字典的情况,如何根据value获取对应的key?
比如这个例子:
d = {'a':{'name':'zhangsan','age':20},'b':{'name':'lisi','age':38}}
如果给出了38,想要获取结果“b”,应该怎么做呢?
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用.连接起来。