如何从列表中删除?

Set*_*una 2 python

假设我有以下列表:

array1 = ['A', 'C', 'Desk']
Run Code Online (Sandbox Code Playgroud)

和另一个包含:

array2 = [{'id': 'A', 'name': 'Greg'}, 
{'id': 'Desk', 'name': 'Will'},
{'id': 'E', 'name': 'Craig'},
{'id': 'G', 'name': 'Johnson'}]
Run Code Online (Sandbox Code Playgroud)

从列表中删除项目的好方法是什么?以下似乎不起作用

for item in array2:
   if item['id'] in array1:
     array2.remove(item)
Run Code Online (Sandbox Code Playgroud)

sbe*_*rry 7

你也可以使用列表理解:

>>> array2 = [{'id': 'A', 'name': 'Greg'},
... {'id': 'Desk', 'name': 'Will'},
... {'id': 'E', 'name': 'Craig'},
... {'id': 'G', 'name': 'Johnson'}]
>>> array1 = ['A', 'C', 'Desk']
>>> filtered = [item for item in array2 if item['id'] not in array1]
>>> filtered
[{'id': 'E', 'name': 'Craig'}, {'id': 'G', 'name': 'Johnson'}]
Run Code Online (Sandbox Code Playgroud)