在嵌套的python字典中查找出现

时间:2019-07-05 08:19:38

标签: python json dictionary

我想在字典中找到条目,其中的键包含子字符串'eval''evt',value是字典。然后返回其属性'func''name''str' / 'num'

a = {'compatibility': {'schema': ['attribute_variables/sitesections',
       'container_visits'],
      'status': 'valid',
      'supported_features': ['function_attr',
       'function_container',
       'function_streq'],
      'supported_products': ['data', 'o', 'discover'],
      'supported_schema': ['data_warehouse', 'schema_o'],
      'validator_version': '1.1.13'},
     'definition': {'container': {'context': 'visits',
       'func': 'container',
       'pred': {'description': 'Site Section',
        'func': 'streq',
        'str': 'prospektbox',
        'val': {'func': 'attr', 'name': 'variables/sitesections'}}},
      'func': 'segment',
      'version': [1, 0, 0]},
     'description': '',
     'id': 's2162_5c73faed6089',
     'modified': '2019',
     'name': 'Visits in Box',
     'owner': {'id': 59, 'login': 'm', 'name': 'Max'},
     'reportSuiteName': 'P',
     'rsid': 'partner',
     'siteTitle': 'P',
     'tags': []}

在此示例中,我想要的输出是值'attr''variables/sitesections'

我使用此方法进行了尝试,但是这会返回长度为1的列表中的值。因此,我无法分离这些值,这对于进一步使用很重要。

def find(node):
    if isinstance(node, list):
        for i in node:
            for x in findkeys(i, 'evt'):
                yield x
    elif isinstance(node, dict):
        if kv in node:
            yield node['evt']
        for j in node.values():
            for x in findkeys(j, 'evt'):
                yield x

0 个答案:

没有答案