【发布时间】:2011-06-05 13:05:47
【问题描述】:
我有一个类代表一些字段。当对此类的实例列表进行排序时,我希望它们按特定顺序排序(从每个实例中获取特定键)。我可以只做list.sort(key=Classname.sortKey) 并定义一个sortKey 方法,但我宁愿只做list.sort() 并让它解决。我想我可以通过覆盖__cmp__ 来做到这一点。但是,当我与不是我的数据类型的东西进行比较时,我该怎么办?我想像......
def __cmp__(self, o):
if isinstance(o, MyClass):
return cmp(self.sortKey(), o.sortKey())
return object.__cmp__(self, o) ##**wrong
但那是可行的。我不在乎他们在异构列表中采用什么顺序。我只会返回0,但是对于任何x 而不是MyClass 的实例,MyClass(...) == x 这样的东西总是正确的。
【问题讨论】:
标签: python sorting data-structures