如何筛选Python字典列表中BackupStatus为FAILURE的条目?
Python字典列表筛选BackupStatus为FAILURE的条目
需求说明
从包含多个字典的列表中,筛选出所有BackupStatus字段值为"FAILURE"的条目。
解决方案
方法1:列表推导式(推荐,简洁高效)
列表推导式是处理这类筛选需求最常用的方式,代码可读性高且执行效率优。
# 定义原始备份记录列表 backup_records = [ {'HostName': 'DEMOBDDBX00100.demo', 'BackupStatus': 'SUCCESS'}, {'HostName': 'DEMOBDDBX00200.demo', 'BackupStatus': 'SUCCESS'}, {'HostName': 'DEMOBDDBX10101.demo', 'BackupStatus': 'FAILURE'}, {'HostName': 'DEMOBDDBX10102.demo', 'BackupStatus': 'FAILURE'}, {'HostName': 'DEMOBDDBX10201.demo', 'BackupStatus': 'FAILURE'}, {'HostName': 'DEMOBDDBX10202.demo', 'BackupStatus': 'FAILURE'}, {'HostName': 'DEMOBDMBX00100.demo', 'BackupStatus': 'SUCCESS'}, {'HostName': 'DEMOBDMBX00200.demo', 'BackupStatus': 'SUCCESS'}, {'HostName': 'DEMOBDMBX10101.demo', 'BackupStatus': 'FAILURE'}, {'HostName': 'DEMOBDMBX10102.demo', 'BackupStatus': 'FAILURE'}, # 其他省略的条目 ] # 筛选失败的备份记录 failed_backups = [item for item in backup_records if item['BackupStatus'] == 'FAILURE'] # 按格式打印结果 for record in failed_backups: print(f" {record}")
方法2:使用filter()函数
如果偏好函数式编程风格,可以用filter()配合匿名函数实现筛选:
# 筛选失败的备份记录 failed_backups = list(filter(lambda x: x['BackupStatus'] == 'FAILURE', backup_records)) # 按格式打印结果 for record in failed_backups: print(f" {record}")
执行结果
运行上述代码后,输出与期望一致:
{'HostName': 'DEMOBDDBX10101.demo', 'BackupStatus': 'FAILURE'} {'HostName': 'DEMOBDDBX10102.demo', 'BackupStatus': 'FAILURE'} {'HostName': 'DEMOBDDBX10201.demo', 'BackupStatus': 'FAILURE'} {'HostName': 'DEMOBDDBX10202.demo', 'BackupStatus': 'FAILURE'} {'HostName': 'DEMOBDMBX10101.demo', 'BackupStatus': 'FAILURE'} {'HostName': 'DEMOBDMBX10102.demo', 'BackupStatus': 'FAILURE'}
内容的提问来源于stack exchange,提问作者Sheril Damodharan SANDAMS
相关产品推荐
相关产品推荐

