【发布时间】:2014-08-13 19:31:11
【问题描述】:
我创建了一个名为Element的新类o对象,它有很多值'degree'
class Element(object):
def __init__(self, name, i):
self.name = name
self.degree = i
# some other values
#some other functions
def __cmp__(self, other):
return cmp(self.degree, other.degree)
我想创建一个包含这些元素的优先级队列:
que = Queue.PriorityQueue()
que.put(Element('element1', 23))
que.put(Element('element2', 45))
que.put(Element('element3', 11))
while not que.empty():
next_el = que.get()
print next_el.name + " " + next_el.degree
程序将打印:
element3 11
element1 23
element2 45
但我想拥有:
element2 45
element1 23
element3 11
所以我想使度值较大的元素具有较高的优先级并被优先考虑。 而第二个问题是:如果两个元素的度数相同,它们的取值顺序是什么?
【问题讨论】:
-
然后进行不同的比较。你的第一个问题并不是一个真正的问题。第二个问题是:无论您以哪种方式定义比较器。 Equals 也必须返回 true 或 false。
标签: python queue priority-queue