以键作为输入并在整个json数据中搜索该键并返回该键的键值对列表的方法
此方法对于普通键值对area()
来说工作正常,但是如果键的值是列表或字典{'key':'some value'}
,则返回空列表
{'keya':[1,2,3]}
答案 0 :(得分:0)
如果给定对象是字典,则可以使用一个函数,如果给定键在字典中存在,则产生该值,然后递归地从dict值中产生,或者从列表项产生,如果对象是列表:
def extract(obj, key):
if isinstance(obj, dict):
if key in obj:
yield obj[key]
for k, v in obj.items():
yield from extract(v, key)
elif isinstance(obj, list):
for i in obj:
yield from extract(i, key)
所以给定:
d = {
'a': [1, 2, 3],
'b': {'a': 'c'},
'c': [
{'a': 'd'},
{'b': 'e'}
]
}
list(extract(d, 'a'))
返回:
[[1, 2, 3], 'c', 'd']