Как объясняется в документации, PriorityQueue
в python, похоже, не принимает пользовательские функции сравнения. Однако вы можете использовать min
и обычный список для достижения желаемого, поскольку вызов функции min
принимает функцию key
, которая решает, какой элемент наименьший.
class node():
def __init__(self, dist):
self.dist = dist
def get_dist(node):
return node.dist
nodes = [node(4), node(413), node(2), node(14), node(5)]
out = min(nodes, key=get_dist)
nodes.remove(out)
print('popped out:', out.dist) # popped out: 2
out = min(nodes, key=get_dist)
nodes.remove(out)
print('popped out:', out.dist) # popped out: 4
out = min(nodes, key=get_dist)
nodes.remove(out)
print('popped out:', out.dist) # popped out: 5