今天朋友提了个好问题:如果一个字典里嵌套了列表,列表里又嵌套了字典,字典和列表的数量不定,该如何查询一个key的值呢?
举例
d = {"a":[{"b":[1,2,3],"c":"cccc"},[1,2,3]]}
方法1
按字符串搜索,直接找key,然后提取value。
方法2
朋友:我一定要解析字典。
我:好吧。。。写一段递归
def recur(ss, obj):
'''
:param ss: 字典/列表
:param obj: key
:return: 找不到返回None
'''
if isinstance(ss, dict):
for k, v in ss.items():
if k == obj:
return v
else:
ret = recur(v, obj)
if ret is not None:
return ret
elif isinstance(ss, list):
for i in ss:
ret = recur(i, obj)
if ret is not None:
return ret
else:
return None
补充
isinstance里可用的类型有:int,float,bool,complex,str(字符串),list,dict(字典),set,tuple