how to properly use sorting function in python
本问题已经有最佳答案,请猛点这里访问。
我有一个关于Python排序函数的问题。我无法理解它实际上是如何工作的。这是我的课:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | class DataScript(object): def __init__(self, index, name, size): self.index = index self.name = name self.size = size def __cmp__(self, other): if hasattr(other, 'getKey'): if self.getKey() == other.getKey(): return 0 else: if self.getKey() > other.getKey(): return 1 else: return -1 def getKey(self): return self.size def __iter__(self): return self def __next__(self): self.index += 1 try: return data[self.index - 1] except IndexError: self.idx = 0 raise StopIteration # Done iterating. def __repr__(self): return '[' + str(data.index) + ', ' + data.name + ', ' + convert_bytes(data.size) + ']' |
据说我必须给出我要排序的列表和getket函数来获取排序键。但是,当我尝试运行这样的一个操作时:我得到一个错误,即某个对象不可重复,或者没有针对该对象的getkey函数?这就是我如何称呼它,我不得不说它对我没有意义。第一个例子不起作用,我猜想它实际上不能确定项目索引,什么也不做。第二个例子有效,我不明白为什么。
1 | sorted(resultList, key=resultList.getKey) |
或
1 | resultList.sort(key=resultList.getKey) |
为什么不:
1 2 3 | from operator import attrgetter sorted(resultList, key=attrgetter('size')) |
排序EDOCX1[0]列表的一种方法是:
1 | sorted(resultList, key=lambda elem: elem.getKey()) |
有关更多信息,请参阅此处