首页 > 解决方案 > Python - 比较两个列表以查找项目包含不等于的匹配项目?

问题描述

是否可以在两个列表中搜索匹配项,其中列表项包含匹配的字符串,不等于?

例如:

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',
    ]

10.30.10.0/24并且10.40.10.0/24从 list_a 中丢失,所以我想将这两个作为丢失返回?

我可以将 list_a 中的子网正则表达式生成 new_list_a 然后使用 set 进行比较?但想知道是否有更简单的方法?

谢谢

标签: python

解决方案


您可以使用

>>> 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']

IPssetIP 地址的(用于 O(1) 成员资格测试),其中s.rsplit(' ')[-1]用于获取list_a.


推荐阅读