Python-分组依据并缺少属性值的过滤器

用户名

我有一个列表,其中某些项目没有像这样的属性item["transitioned_to"] = 'Ended',我想计算有多少项目缺少此值。

我只能计算有多少个项目具有“ Ended”属性:data_filtered = list(filter(lambda x: x['transitioned_to'] == "Ended", steps))-每个项目Ended都相对于single execution_id

如何汇总此列表execution_sid并计算缺少多少项item["transitioned_to"] = 'Ended'

作为输入示例:

[{
    'execution_sid': 'sid1',
    'transitioned_from': 'step_a',
    'transitioned_to': 'step_b',
}, {
    'execution_sid': 'sid1',
    'transitioned_from': 'step_b',
    'transitioned_to': 'Ended',
}, {
    'execution_sid': 'sid2',
    'transitioned_from': 'step_a',
    'transitioned_to': 'step_b',
}]

在此示例中,每种情况下应返回1:1已结束,1已结束。可以使用python执行此计数吗?

罗曼·佩列赫雷斯特

collections.defaultdict对象:

from collections import defaultdict

lst = [{'execution_sid': 'sid1', 'transitioned_from': 'step_a', 'transitioned_to': 'step_b', },
       {'execution_sid': 'sid1', 'transitioned_from': 'step_b', 'transitioned_to': 'Ended', },
       {'execution_sid': 'sid2', 'transitioned_from': 'step_a', 'transitioned_to': 'step_b', }]

res = defaultdict(int)
for d in lst:
    res[d['execution_sid']] += d['transitioned_to'] != 'Ended'

print(dict(res))

输出(按汇总execution_sid):

{'sid1': 1, 'sid2': 1}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章