如果有像这样的字典项的列表:如何在两个通过列表理解分隔一个列表或以其他方式
L = [{"a":1, "b":0}, {"a":3, "b":1}...]
我想分裂基于对“B”的值这些条目,要么0或1.
A(b=0) = [{"a":1, "b":1}, ....]
B(b=1) = [{"a":3, "b":2}, .....]
我很喜欢使用简单的列表解析,而我目前正在循环列表L两次。
A = [d for d in L if d["b"] == 0]
B = [d for d in L if d["b"] != 0]
显然这不是最有效的方法。
else子句在列表理解功能中似乎不可用。
我可以通过列表理解来做我想要的吗?
有没有更好的方法来做到这一点?
我正在寻找可读性和效率之间的良好平衡,倾向于可读性。
谢谢!
更新: 感谢大家的意见和想法!对我来说最容易阅读的是托马斯的那本书。但我也会看看Alex的建议。我以前没有找到任何有关集合模块的参考。
我假设第二个代码示例有一个键值为“b” – telliott99 2010-01-22 18:11:51