python - 如何在python中正确使用排序功能
问题描述
我对 python 排序函数有疑问。我无法消化它实际上是如何工作的。这是我的课:
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 函数?我是这样称呼它的,我不得不说它对我来说毫无意义。第一个示例不起作用,我猜它实际上无法确定项目索引并且什么也不做。第二个例子有效,我不明白为什么。
sorted(resultList, key=resultList.getKey)
或者
resultList.sort(key=resultList.getKey)
解决方案
为什么不:
from operator import attrgetter
sorted(resultList, key=attrgetter('size'))
推荐阅读
- javascript - 如何使用javascript访问对象?
- python - 使用多个顶级域时烧瓶 host_matching 和静态文件
- android - 停止在 @Inject 注释之间添加换行符
- python - 输出 numpy.linspace 与 numpy.array
- python - 如何在 Kmeans 中获得中心点
- python - 在 Python 中从浮点数转换为日期时间
- c++ - 如何在纸牌游戏中实现花色?
- python - 如何使用 BeautifulSoup 抓取带有动态脚本的网页?
- algorithm - 如何计算运行时 t 中算法 O(2log(n)) 的最大输入 n 大小?
- angular - 是否可以改变角度的视图技术?