如何根据ip
?
当我打印结果时,我得到了这个:
[{'abc.example.com': {'hostname': 'abc.example.com', 'ip': '11.123.30.116', 'country': 'Netherlands', 'cname': ''}},
{'accountstat.example.com': {'hostname': 'accountstat.example.com', 'ip': '11.123.30.133', 'country': 'Netherlands', 'cname': ''}},
{'ae.example.com': {'hostname': 'ae.example.com', 'ip': '11.123.24.22', 'country': 'Netherlands', 'cname': 'site.example.com'}}]
答案 0 :(得分:0)
如果您希望按值排序,可以将它们转换为整数并进行比较。
def ip_to_int(ip):
return int.from_bytes(bytes([int(part) for part in ip.split('.')]), byteorder='big')
data = [{'abc.example.com': {'hostname': 'abc.example.com', 'ip': '11.123.30.116', 'country': 'Netherlands', 'cname': ''}},
{'accountstat.example.com': {'hostname': 'accountstat.example.com', 'ip': '11.123.30.133', 'country': 'Netherlands', 'cname': ''}},
{'ae.example.com': {'hostname': 'ae.example.com', 'ip': '11.123.24.22', 'country': 'Netherlands', 'cname': 'site.example.com'}}]
sorted(data, key=lambda x: ip_to_int(list(x.values())[0]['ip']))
请注意,此解决方案仅适用于IPv4,data
列表中每个项目只有一个IP。如果您还需要IPv6支持,则必须首先确定如何对IPv4与IPv6进行排序,然后相应地更新ip_to_int
功能。