按属性ip排序类实例列表

时间:2012-10-22 13:06:08

标签: python list sorting ip

我有点失落。我想对列表进行排序,格式为:

[instance_of_myClass, instance_of_myClass, instance_of_myClass...]
init的{​​p> myClass看起来像这样:

def __init__(self):
   self.ip = ""
   self.hostname = ""
   self.further_informtion

我希望它按照IP地址进行排序,我发现它是

sorted(list_of_ips, key=lambda ip: long(''.join(["%02X" % long(i) for i in ip.split('.')]), 16))

来自How to sort IP addresses stored in dictionary in Python?

我无法转移它。有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:1)

根据文件:

key指定一个参数的函数,该函数用于从每个列表元素中提取比较键。默认值为“无”。

所以你提供的上述lambda函数的实际参数是你的'myClass'的实例,所以为了通过ip对你的类实例进行排序,你应该写得像:

key=lambda my_instace: long(''.join(["%02X" % long(i) for i in my_instance.ip.split('.')]), 16))

答案 1 :(得分:0)

[instance_of_myClass, instance_of_myClass, instance_of_myClass...].sort(lambda a, b: cmp(a.ip, b.ip))