我有一份清单:
bigdumblist = [
(0, 0, {'product_id': 2, 'product_uom_qty': 90}),
(0, 0, {'product_id': 3, 'product_uom_qty': 5}),
(0, 0, {'product_id': 5, 'product_uom_qty': 69})
]
我想从列表中删除'product_id'
不是2或3的所有项目,如下所示:
[
(0, 0, {'product_id': 2, 'product_uom_qty': 90}),
(0, 0, {'product_id': 3, 'product_uom_qty': 5})
]
我所尝试的:
def not_in(item):
if item["product_id"] is not 2 or 3:
bigdumblist.remove((0, 0, {'product_id': 5, 'product_uom_qty': 69}))
for _, _, item in bigdumblist:
not_in(item)
break
print(bigdumblist)
这是可行的,但显然包括(0, 0, {'product_id': 5, 'product_uom_qty': 69})
并不是一个解决方案。如何正确删除列表中的特定项目
尝试这样的条件列表理解
如果[2,3]中的x[2]['product_id'],则在bigdumblist中的x代表x
您可以使用如下列表:
在迭代列表时,不应修改列表。您可以先复制一份列表,但使用列表更简单
由于列表理解指定要保留而不是删除哪些元素,因此必须反转条件
注意
被解析为
因为
3
总是真实的,所以这种情况总是会成功的。像and
和or
这样的逻辑运算符不会自动分布在关系运算符上相关问题 更多 >
编程相关推荐