根据一个列表对另一个列表进行排序
Sort one list based on other
我有以下两个列表:
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_ip
上的 ip 地址排序对 list_host
进行排序。
预期输出:
[host2, host4, host1, host3]
我该如何开始?我可以使用哪个功能?
为了排序,您可以将 2 个列表压缩在一起,将键作为元组中的第一个元素,然后打印排序结果中的第二个元素
如果你只使用 10.100.1.x 那么你只需要提取 x(通过拆分和 int 转换)作为键。如果您要处理许多不同的子网,是的,您需要转换为 ipaddress.IPV4Address 对象,这些对象自然按数值而不是字符串表示排序。
print([y[1] for y in sorted(zip([int(x.split('.')[-1]) for x in list_ip],list_host))])
我有以下两个列表:
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_ip
上的 ip 地址排序对 list_host
进行排序。
预期输出:
[host2, host4, host1, host3]
我该如何开始?我可以使用哪个功能?
为了排序,您可以将 2 个列表压缩在一起,将键作为元组中的第一个元素,然后打印排序结果中的第二个元素
如果你只使用 10.100.1.x 那么你只需要提取 x(通过拆分和 int 转换)作为键。如果您要处理许多不同的子网,是的,您需要转换为 ipaddress.IPV4Address 对象,这些对象自然按数值而不是字符串表示排序。
print([y[1] for y in sorted(zip([int(x.split('.')[-1]) for x in list_ip],list_host))])