gpt4 book ai didi

python - 通过网络掩码删除重复的 IP 地址

转载 作者:行者123 更新时间:2023-12-01 03:40:15 29 4
gpt4 key购买 nike

我有一个数组:

[192.0.0.3, 0.0.0.0 , 192.0.10.24, ...]

对于 IP 地址,我想删除/16 网络掩码的重复项,因此我得到了 192.0.0.3,但 192.0.10.24 将被删除(我不介意其中哪一个,如果第一个也可以)一个已被删除)。

我的第一个想法是使用正则表达式来转换网络掩码并删除与随后生成的模式匹配的每个 IP 地址。

有没有更简单的方法?

最佳答案

您可以使用集合删除重复项,其中键是前两部分的元组:

>>> ips = ["192.0.0.3", "0.0.0.0", "192.0.10.24"]
>>> seen = set()
>>> for ip in ips:
... key = tuple(ip.split(".")[:2])
... if key not in seen:
... print(ip)
... seen.add(key)
...
192.0.0.3
0.0.0.0

或者使用ipaddress模块:

>>> from ipaddress import ip_network
>>> ips = ["192.0.0.3", "0.0.0.0", "192.0.10.24"]
>>> seen = set()
>>> for ip in ips:
... key = ip_network(ip + "/16", strict=False)
... if key not in seen:
... print(ip)
... seen.add(key)
...
192.0.0.3
0.0.0.0

关于python - 通过网络掩码删除重复的 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39700746/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com