[英]How can I access nested JSON keys dynamically by using an array in Python?
我想做的是创建一个函数,我将一个字符串数组和一个 json 传递给该函数,该函数将检查 json 是否具有数组指定的键并返回它们的相应值。 在这里,我有一个适用于顶级键(及其值)的片段:
import json
def check_key_and_return(json, keys):
if keys[0] in json:
return json[keys[0]]
else:
return ''
if __name__ == '__main__':
json_s = '{"a":{"b":1}}'
json = json.loads(json_s)
print(check_key_and_return(json, ['a']))
这将返回{'b': 1}
。
我希望能够传递多个字符串,例如check_key_and_return(json, ['a', 'b'])
,以便该函数返回1
(如果未找到匹配项,则返回空字符串。
谢谢你。
由于嵌套键成为父键的值,因此您将有一个迭代器来获取所有键。 其中一种方法可能是:
import numpy as np
import pandas as pd
import json
from collections.abc import Mapping
def nested_keys(d) -> set:
"""
Return a set containing all nested keys.
"""
# If it is not a dict-like object, return an empty set
if not isinstance(d, Mapping):
return set()
keys = d.keys()
for v in d.values():
# Update the keys set with the keys in each value by using the union (or) operator: |
keys |= nested_keys(v)
return keys
str='{"a":{"b":1}}'
json_str = json.loads(str)
print(json_str)
all_keys=nested_keys(json_str)
print(nested_keys(json_str))
find_set1={'a','c'}
print(find_set1.issubset(all_keys))
find_set2={'a','b'}
print(find_set2.issubset(all_keys))
输出:
{'a': {'b': 1}}
{'a', 'b'}
False
True
现在基于上述条件(真/假),您可以返回 1 或空字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.