【发布时间】:2020-08-24 20:26:04
【问题描述】:
我有一个包含 ip4 地址和 ip4 网络的集合。
简单的例子:
{'127.0.0.1', '138.56.76.02', '192.4.2.0/24', '29.24.48.80', etc, etc, etc}
实际大小是几千件。
问题是 - 检查特定 ip 地址'xxx.yyy.zzz.lll' 是否包含在所有这些 ip 地址和 ip 网络的混合中而不逐个遍历它们的最快方法是什么?
使用普通 ips 设置很明显,但存在 ip 网络则不是这样,因为网络也可能包含此 ip。
也可以有相同的设置,但内部的 ips 和网络包含在 ipaddress 包中的 IPv4Address 和 IPv4Network 对象中。
也许有可能以某种方式将所有这些组合到一个伪网络中???
谢谢...
【问题讨论】:
-
您可以创建一组单个 IP,并检查您的 IP 是否是 O(1) 中的一个。对于子网部分,您可以查看stackoverflow.com/questions/44262437/…