我是python新手,我正在寻找一个lambda解决方案,用一个字典以及过滤所选键来提取字典。你知道吗
示例:我的输入如下
{'executionInfos': [
{
'cancelRequested': False,
'execution': {'runId': 22CXalf3g9xdl7kts45gaagL0SdEYMTqockoag4LaBDc=',
'workflowId': 'TestWf1'},
'executionStatus': 'OPEN',
'startTimestamp': datetime.datetime(2019, 4, 25, 17, 1, 8, 585000, tzinfo=tzlocal()),
'workflowType': {'name': 'Test',
'version': '1.0'}
},
{
'cancelRequested': False,
'execution': {'runId': 22NwIvCxrizJQescq7rLILHtMl9ktxj343DC7unUq2GK7M=',
'workflowId': TestWf2'},
'executionStatus': 'OPEN',
'startTimestamp': datetime.datetime(2019, 4, 12, 14, 19, 13, 837000, tzinfo=tzlocal()),
'workflowType': {'name': 'Test',
'version': 1.0'}
}
]
}
我想得到一个dict数组,在那里我可以过滤每个dict(executionStatus)上的键,并从subdict(workflowId)中提取键
{'executionInfos': [
{
'workflowId': 'TestWf1',
'executionStatus': OPEN',
},
{
'workflowId': 'TestWf2',
'executionStatus': OPEN',
}
]
}
我知道它可以用if-else条件和循环来完成,但是我想知道如何使用lambda/或任何一个两行程序来完成。我试着在下面用力工作
KEYS_TO_FILTER = ['executionStatus','workflowId']
res2 = map(lambda attr: attr.keys(), response["executionInfos"])
res3 = filter(lambda attr: attr in KEYS_TO_FILTER, res2)
你可以创建一个新的空字典,然后使用列表理解。以下是不使用lambda函数的解决方案:
输出:
相关问题 更多 >
编程相关推荐