【发布时间】:2010-01-22 17:23:42
【问题描述】:
如果有这样的字典项目列表:
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 子句。
我可以通过列表理解做我想做的事吗?
有没有更好的方法来做到这一点?
我正在寻找可读性和效率之间的良好平衡,倾向于可读性。
谢谢!
更新: 感谢大家的cmets和想法!对我来说最容易阅读的是托马斯的一本书。但我也会看看亚历克斯的建议。我之前没有找到任何对集合模块的引用。
【问题讨论】:
-
我假设第二个代码示例的键“b”的值有错字
标签: python list list-comprehension