这有点让人困惑(至少对我来说)。我使用一个简单的Python脚本,使用fping返回“up”主机的列表。我将每个“up”主机存储在Python列表中,但是列表.排序()显然不会根据存储为字符串的IP地址的最后八位字节进行排序。我想按降序排序。1、.2、.3等
下面是代码的那部分:
for addr in os.popen("fping -a -q -g " + subnet):
addr = addr.rstrip('\n')
addr_list.append(addr)
addr_list.sort()
for ip in addr_list:
print ip
假设您的
addr_list
列表如下(您在问题中没有指定):拆分
.
,并使用最后一个项(最后一个八位字节)作为排序的键。当然,对于'127.0.0.1'和'192.168.0.1',您可能需要根据最后第二个八位字节、最后第三个八位字节和第一个八位字节进行排序。在因此将此行为用作
^{pr2}$key
:请注意,
13
在4
之前列出。因此,还要确保将每个项目作为数字而不是字符串进行比较:将其分配给另一个列表或执行就地排序:
对于最后一个八位字节,您可以在键中使用
rsplit()
:这是在下降-但你的例子似乎是上升的:
^{pr2}$但我想我更喜欢按@aneroid的元组排序:
sort
可以将函数用作执行比较的参数。函数接受两个输入,如果第一个参数更大,则返回1
;如果第二个参数更大,则返回{然后只需将其作为关键字参数来排序:
^{pr2}$相关问题 更多 >
编程相关推荐