从列表Python中删除匹配的项目

Ore*_*man 1 python list boto3 aws-lambda

如何从列表中删除匹配的项目? <class 'list'>

snapshot_tag = [{'Key': 'Disaster_Recovery', 'Value': 'Full'}, {'Key': 'Backup Initiator Rule', 'Value': 'Daily-6d-retention'}, {'Key': 'Name', 'Value': 'HOSTNAME'}, {'Key': 'aws:backup:source-resource', 'Value': '000AD618-2D20-CE4B-0000-0000B688C579'}, {'Key': 'Backup_Type', 'Value': 'CROSS-REGION'}]
Run Code Online (Sandbox Code Playgroud)

我需要删除一个元素:

{'Key': 'aws:backup:source-resource', 'Value': '000AD618-2D20-CE4B-0000-0000B688C579'}
Run Code Online (Sandbox Code Playgroud)

如果指定完整的元素名称,则可以将其删除:

snapshot_tag.remove({'Key': 'aws:backup:source-resource', 'Value': '000AD618-2D20-CE4B-0000-0000B688C579'})
Run Code Online (Sandbox Code Playgroud)

或指定特定的索引:

del snapshot_tag[3]

但在我的情况下,元素的“值”始终不同,索引随机化。

nci*_*ica 5

使用列表理解:

print ([item for item in snapshot_tag if item['Key'] !=  'aws:backup:source-resource'])
Run Code Online (Sandbox Code Playgroud)

或使用filter,lambda:

print (list(filter(lambda item: item['Key'] != 'aws:backup:source-resource', snapshot_tag)))
Run Code Online (Sandbox Code Playgroud)

输出:

[{'Key': 'Disaster_Recovery', 'Value': 'Full'}, {'Key': 'Backup Initiator Rule', 'Value': 'Daily-6d-retention'}, {'Key': 'Name', 'Value': 'HOSTNAME'}, {'Key': 'Backup_Type', 'Value': 'CROSS-REGION'}]
Run Code Online (Sandbox Code Playgroud)