【发布时间】:2021-10-07 15:48:41
【问题描述】:
我正在考虑编写一个对 IP 地址(IPv4 和 6)以及主机名进行排序的函数。例如
127.0.0.1
test.com
10.10.23.4
98.137.246.8
2001:0db8:85a3:0000:0000:8a2e:0370:7334
98.137.246.7
我已经尝试过这段代码,它只适用于 IPv4。有人可以帮助编写一个函数来对所有内容进行排序(如果存在)?
sorted(sorted_ips, key=lambda ip: struct.unpack("!L", inet_aton(ip))[0])
输出应该是,因此按地址升序排序。
10.10.23.4
98.137.246.7
98.137.246.8
2001:0db8:85a3:0000:0000:8a2e:0370:7334
test.com
提前致谢。
【问题讨论】:
-
应该应用什么排序...?
-
所以,首先是 IPv4,然后是 IPv6,都按 逻辑 顺序(例如
2.x.x.x、100.x.x.x),然后是主机名,最后是 升序 i> 订购? -
@deceze 是的,这是正确的
标签: python python-3.x sorting