如何用字典推导式过滤字典中Pandas ResultSet内的元素?
可以用字典推导式实现需求,无需常规循环
完全可以通过嵌套推导式实现这个需求,不需要写常规循环。核心思路是在字典推导式的 value 部分,用列表推导式对每个 ResultSet 里的元素做过滤:
myDict = {k: [item for item in v if item['c'] > 0] for k, v in myDict.items()}
示例验证
输入字典:
myDict = { "key1": [{"a":1,"b":-2,"c":-3}, {"a":1,"b":-2,"c":3}], "key2": [{"a":1,"b":2,"c":3}, {"a":51,"b":-42,"c":43}] }
执行上述推导式后,得到的输出结果:
{ "key1": [{"a":1,"b":-2,"c":3}], "key2": [{"a":1,"b":2,"c":3}, {"a":51,"b":-42,"c":43}] }
可选扩展:过滤空结果集
如果还需要移除那些过滤后 ResultSet 为空的键,可以在推导式末尾加上判断条件:
myDict = { k: filtered_v for k, v in myDict.items() if (filtered_v := [item for item in v if item['c'] > 0]) }
这样会自动剔除所有过滤后元素数量为0的键值对。
内容的提问来源于stack exchange,提问作者MiamiBeach
相关产品推荐
相关产品推荐

