如果有像這樣的字典項的列表:如何在兩個通過列表理解分隔一個列表或以其他方式
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