我有一个python字典,里面有以下条目:
> ...
> {'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'}
> {'HostName': 'DEMODACRT10100.demo', 'BackupStatus': 'SUCCESS'}
> {'HostName': 'DEMODACRT10200.demo', 'BackupStatus': 'SUCCESS'}
> {'HostName': 'DEMODACTS10101.demo', 'BackupStatus': 'SUCCESS'}
> {'HostName': 'DEMODACTS10102.demo', 'BackupStatus': 'SUCCESS'}
> {'HostName': 'DEMOKLIRT10100.demo', 'BackupStatus': 'SUCCESS'}
> {'HostName': 'DEMOKLIRT10200.demo', 'BackupStatus': 'SUCCESS'}
> {'HostName': 'DEMOKNORT10100.demo', 'BackupStatus': 'SUCCESS'}
> {'HostName': 'DEMOKNORT10200.demo', 'BackupStatus': 'SUCCESS'}
> {'HostName': 'DEMOKOSRT10200.demo', 'BackupStatus': 'SUCCESS'}
> {'HostName': 'DEMOLABTS10300.demo', 'BackupStatus': 'SUCCESS'}
> {'HostName': 'DEMOLABTS10400.demo', 'BackupStatus': 'SUCCESS'}
> ...
我需要过滤掉主机名中的值,只有当BackupStatus == "FAILURE"
我需要这样的输出:
{'HostName': 'DEMOBDMBX10101.demo', 'BackupStatus': 'FAILURE'}
{'HostName': 'DEMOBDDBX10101.demo', 'BackupStatus': 'FAILURE'}
{'HostName': 'DEMOBDDBX10102.demo', 'BackupStatus': 'FAILURE'}
{'HostName': 'DEMOBDDBX10201.demo', 'BackupStatus': 'FAILURE'}
{'HostName': 'DEMOBDDBX10202.demo', 'BackupStatus': 'FAILURE'}`
有人能帮我一下吗?这看起来不像一个字典,而是一个字典列表。
如果是这种情况,似乎你想获得一个子列表,只有那些元素(字典)有BackupStatus
等于FAILURE
。所以你可以这样做:
recs = [
{'HostName': 'DEMOBDDBX00100.demo', 'BackupStatus': 'SUCCESS'},
{'HostName': 'DEMOBDDBX00200.demo', 'BackupStatus': 'SUCCESS'},
{'HostName': 'DEMOBDDBX10101.demo', 'BackupStatus': 'FAILURE'},
...
]
failed_recs = [v for v in recs if v['BackupStatus'] == 'FAILURE']
考虑使用列表推导式:
>>> data = [
... {'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'},
... {'HostName': 'DEMODACRT10100.demo', 'BackupStatus': 'SUCCESS'},
... {'HostName': 'DEMODACRT10200.demo', 'BackupStatus': 'SUCCESS'},
... {'HostName': 'DEMODACTS10101.demo', 'BackupStatus': 'SUCCESS'},
... {'HostName': 'DEMODACTS10102.demo', 'BackupStatus': 'SUCCESS'},
... {'HostName': 'DEMOKLIRT10100.demo', 'BackupStatus': 'SUCCESS'},
... {'HostName': 'DEMOKLIRT10200.demo', 'BackupStatus': 'SUCCESS'},
... {'HostName': 'DEMOKNORT10100.demo', 'BackupStatus': 'SUCCESS'},
... {'HostName': 'DEMOKNORT10200.demo', 'BackupStatus': 'SUCCESS'},
... {'HostName': 'DEMOKOSRT10200.demo', 'BackupStatus': 'SUCCESS'},
... {'HostName': 'DEMOLABTS10300.demo', 'BackupStatus': 'SUCCESS'},
... {'HostName': 'DEMOLABTS10400.demo', 'BackupStatus': 'SUCCESS'},
... ]
>>> [d for d in data if d['BackupStatus'] == 'FAILURE']
[{'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'}]