是否可以在列表项包含匹配字符串但不相等的两个列表中搜索匹配项?
例如:
list_a = [
'ip prefix-list PL_ABBA seq 5 permit 10.10.10.0/24',
'ip prefix-list PL_ABBA seq 10 permit 10.20.10.0/24',
]
list_b = [
'10.10.10.0/24',
'10.20.10.0/24',
'10.30.10.0/24',
'10.40.10.0/24',
]
list_a 中缺少
10.30.10.0/24 和 10.40.10.0/24 所以我想将这两个作为丢失返回?
我可以用正则表达式从 list_a 中取出子网来生成 new_list_a,然后使用 set 进行比较吗?但想知道是否有更简单的方法?
谢谢
请您参考如下方法:
你可以使用
>>> IPs = {s.rsplit(' ')[-1] for s in list_a}
>>> IPs
>>> {'10.10.10.0/24', '10.20.10.0/24'}
>>> [ip for ip in list_b if ip not in IPs]
>>> ['10.30.10.0/24', '10.40.10.0/24']
IPs 是 ip 地址的集合(用于 O(1) 成员资格测试),其中 s.rsplit(' ')[-1 ]用于获取list_a中元素的IP部分。
