如何高效查找两个map列表中按ip_address比对的缺失条目
最优高效实现方案
核心逻辑
将B列表中的所有ip_address提取出来存入哈希集合,利用集合O(1)的常数级查找效率,整体时间复杂度为O(len(A) + len(B)),相比嵌套循环遍历的O(len(A)*len(B))性能提升显著,尤其适合A是数据库批量拉取的大量存量数据、B是实时采集数据的场景。
Python示例代码
# 提取B中所有ip存入集合,自动去重 b_ips = {item["ip_address"] for item in B} # 遍历A筛选出不在B的ip集合中的值 res = [item["ip_address"] for item in A if item["ip_address"] not in b_ips]
代入你给出的示例数据运行,最终得到的res就是你期望的["192.168.1.3"]。
其他语言通用逻辑
不管用什么编程语言,核心思路都一致:先把B的ip_address存入哈希结构(哈希集合、哈希表的键都可以),再遍历A做查找即可,避免嵌套循环带来的性能损耗。
内容的提问来源于stack exchange,提问作者Tom Bradely
相关产品推荐
相关产品推荐

