我想在字典中找到条目,其中的键包含子字符串'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