[英]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.