从列表中删除匹配项

2024-10-04 03:16:31 发布

您现在位置:Python中文网/ 问答频道 /正文

如何从列表中删除匹配项?<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'}]

我需要删除一个元素:

{'Key': 'aws:backup:source-resource', 'Value': '000AD618-2D20-CE4B-0000-0000B688C579'}

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

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

或指定特定索引:

del snapshot_tag[3]

但在我的例子中,元素的“值”总是不同的,索引是随机的。你知道吗


Tags: keyaws元素source列表valuetagsnapshot
2条回答

您可以使用列表:

some_value = '000AD618-2D20-CE4B-0000-0000B688C579'

snapshot_tag = [s for s in snapshot_tag if s != {'Key': 'aws:backup:source-resource', 'Value': some_value}]

末尾的if语句将跳过该元素。或者,您可以使用filter

a = list(filter(lambda x: x.get('Value') != '000AD618-2D20-CE4B-0000-0000B688C579', snapshot_tag))

使用列表理解:

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

或使用过滤器,λ:

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

输出:

[{'Key': 'Disaster_Recovery', 'Value': 'Full'}, {'Key': 'Backup Initiator Rule', 'Value': 'Daily-6d-retention'}, {'Key': 'Name', 'Value': 'HOSTNAME'}, {'Key': 'Backup_Type', 'Value': 'CROSS-REGION'}]

相关问题 更多 >