我正在尝试尽快在程序中对对象进行排序。我知道在python 3.x中不推荐使用cmp函数进行排序,并且使用键更快,但我不确定如何在不使用cmp函数的情况下获得相同的功能。
以下是该类的定义:
class Topic:
def __init__(self, x, y, val):
self.id = val
self.x = x
self.y = y
我有一个充满Topic
的字典来浮动键,值对和要排序的主题列表。要排序的Topic
列表中的每个主题在此词典中都有一个条目。我需要按字典中的值对主题列表进行排序。如果两个主题的值相差<= .001,则应首先使用ID较高的主题。
这是我正在使用的当前代码:
topicToDistance = {}
# ...
# topicToDistance populated
# ...
topics = topicToDistance.keys()
def firstGreaterCmp(a, b):
if abs(topicToDistance[a]-topicToDistance[b]) <= .001:
if a.id < b.id:
return 1
if topicToDistance[a] > topicToDistance[b]:
return 1
return -1
# sorting by key may be faster than using a cmp function
topics.sort(cmp = firstGreaterCmp)
任何帮助尽快做到这一点都将受到赞赏。