====== Python3 Priority Queues ====== ===== Insertion & Removal ===== import queue q = queue.PriorityQueue() q.put(10) q.put(1) q.put(5) while not q.empty(): print(q.get()) # 1 5 10 ===== Modifying Priority ===== Unlike C++ and Java, the standard priority queue in Python3 does not take a comparator on declaration. There are two means of dealing with a modified priority or a priority that is separate from the object: * create a tuple with additional data members that indicate priority [e.g., (p1, p2, ..., p//n//), data)] or * create a class with a __cmp__ operator overload. In many instances the former is fastest. E.g., If we wish to sort individuals by zip code, street name, address, and name, we would create the tuple:\\ ''(zip, street, address, name)'' for insertion. import queue q = queue.PriorityQueue() q.put((65412, "ABC Rd.", 204, "Berry")) q.put((65412, "Z3 Dr.", 459, "Zuse")) q.put((65412, "ABC Rd.", 123, "Atanasoff")) q.put((65400, "Analytical Ct.", 000, "Babbage")) while not q.empty(): print(q.get()) # Babbage, Atanasoff, Berry, Zuse