1

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

[instance_of_myClass, instance_of_myClass, instance_of_myClass...]

initmyClass看起来像这样:

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))

如何在 Python 中对存储在字典中的 IP 地址进行排序?

不过我在转移它时遇到了麻烦。有人可以帮我弄这个吗?

4

2 回答 2

1

根据文档:

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

因此,您作为键提供的上述 lambda 函数的实际参数是您的“myClass”的实例,因此为了按 ip 对您的类实例进行排序,您应该这样编写:

key=lambda my_instace: long(''.join(["%02X" % long(i) for i in my_instance.ip.split('.')]), 16))
于 2012-10-22T13:16:28.140 回答
0
[instance_of_myClass, instance_of_myClass, instance_of_myClass...].sort(lambda a, b: cmp(a.ip, b.ip))
于 2012-10-22T13:18:40.177 回答