Python 3.x 根据一个列表对另一个列表进行排序

Python 3.x 根据一个列表对另一个列表进行排序,python-3.x,sorting,arraylist,ip-address,Python 3.x,Sorting,Arraylist,Ip Address,我有以下两个清单: list_ip = [10.100.1.100, 10.100.1.30, 10.100.1.110, 10.100.1.40] list_host = [host1, host2, host3, host4] 我需要的是根据list\u ip上的ip地址排序,对list\u主机进行排序 预期产出: [host2, host4, host1, host3] 我怎么开始?我可以使用哪个函数进行排序?您可以将2个列表压缩在一起,将键作为元组中的第一个元素,然后打印排序结果中的

我有以下两个清单:

list_ip = [10.100.1.100, 10.100.1.30, 10.100.1.110, 10.100.1.40]
list_host = [host1, host2, host3, host4]
我需要的是根据
list\u ip
上的ip地址排序,对
list\u主机
进行排序

预期产出:

[host2, host4, host1, host3]

我怎么开始?我可以使用哪个函数进行排序?

您可以将2个列表压缩在一起,将键作为元组中的第一个元素,然后打印排序结果中的第二个元素

如果您只使用10.100.1.x,那么您只需要提取x(通过split&int转换)作为键。如果要处理许多不同的子网,则需要转换为ipaddress.IPV4Address对象,这些对象自然按数值排序,而不是按字符串表示

print([y[1] for y in sorted(zip([int(x.split('.')[-1]) for x in list_ip],list_host))])

虽然这段代码可能会回答这个问题,但提供关于这段代码为什么和/或如何回答这个问题的附加上下文可以提高其长期价值。非常感谢。有没有办法用python ipaddress包编写排序函数?