python - 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 进行比较?但想知道是否有更简单的方法?
谢谢
解决方案
您可以使用
>>> 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
是set
IP 地址的(用于 O(1) 成员资格测试),其中s.rsplit(' ')[-1]
用于获取list_a
.
推荐阅读
- c# - 一个使用 Azure AD B2C 的多个客户端 ID(应用程序 ID)的 ASP.NET Core 2.2 Web API 应用程序
- javascript - Chart.js 多个数据集
- javascript - 有没有办法将firestore搜索结果变成一个数组?
- c++ - 字符串返回函数不起作用 - '标识符不足'
- c# - 如何从对象列表构建动态字符串?
- python - 如何使用 subprocess.run() 运行 psexec?
- android - Android Studio gradle app:compileDebugAidl 输入长度 = 1
- go - 频道有一个奇怪的行为,为什么会阻塞?
- atom-editor - 如何更改 Atom 中用于 ERB 的语法?
- android - Android - 推送通知:FirebaseMessagingService 类的用途?