- Priority Queue in Python
- Priority Queue Custom Comparator in Python
- Priority Queue Using List in Python
Priority Queue Using
heapdictModule in Python
This article will look into developing a custom priority queue with Python. In addition to that, we will also learn how we can utilize a custom comparator function with the priority queue.
Priority Queue in Python
A priority queue is a data structure that allows us to store items with a certain priority. The priority queue will then order the items so that the item with the highest priority is at the top of the queue.
A priority queue is often used in algorithms where we need to process the items in order of priority. Suppose we were processing a list of tasks; we would want to process the most important tasks first.
We can do it using a priority queue.
Priority Queue Custom Comparator in Python
The built-in module
queue in Python provides a priority queue implementation. However, the module does not allow us to specify a custom comparator for the priority queue.
This can be a problem if we want to use a different ordering for the priority queue than the default ordering.
Fortunately, there is a way to create a custom comparator for a Python priority queue. In this article, we will see how to do this.
We will be exploring two examples of the priority queue.
- Priority Queue Using the list in Python
- Priority Queue Using the
heapdictmodule of Python
Priority Queue Using List in Python
To begin, we will make a blank list. After that, we will add each person’s name to the list in order of importance.
We will start from 1 and move to ascend. Therefore, each name will be assigned a number, serving as the priority on the list.
The priority is an integer number that establishes the sequence in which the tasks will be carried out when they are eventually completed.
Let’s get it done by using the code. Firstly, we will create a list called
This list will be initially empty. See the code below.
names = 
Now, to add names to the list, we will use the
append method that is easily accessible from the
list functionalities. The
append method requires two arguments to be sent in.
Add a number to the list to indicate the priority, number, name, or anything else. For our purposes, we would want the name
Abid to appear at
position1 on the list.
There is no limit to the number of names or items that can be added, and the index numbers will indicate their order of priority.
names.append((1, "Abid")) names.append((4, "Jesica")) names.sort(reverse = True) names.append((3, "Anna")) names.sort(reverse = True) names.append((2, "Pat"))
names list records will be printed out when we utilize the
while loop here.
while names: print(names.pop())
This is the same code created before; copy it and execute it to see the results.
names =  names.append((1, "Abid")) names.append((4, "Jesica")) names.sort(reverse = True) names.append((3, "Anna")) names.sort(reverse = True) names.append((2, "Pat")) names.sort(reverse = True) while names: print(names.pop())
(1, 'Abid') (2, 'Pat') (3, 'Anna') (4, 'Jesica')
This is the output of running the code. We can see clearly that each name is ordered according to the priority and index we provided.
Priority Queue Using
heapdict Module in Python
The priority queue based on a heap is made accessible through the
heapdict Python module. It is comparable to the normal
heapq module but offers a greater variety of capabilities and adaptability.
A binary heap is the foundation of the
heapdict data structure. A binary heap is a data structure that can be used to store data in a manner that facilitates the efficient retrieval and change of that data.
The binary heap is a full binary tree, which indicates that every node in the tree has two offspring, and the tree itself is always balanced.
HeapQueue are the two primary classes made available by the
heapdict module. The
heapdict class functions similarly to a dictionary and keeps its content in a heap.
A heap is used to hold the information managed by the queue-like class called
HeapDict and the
HeapQueue classes are built-in subclasses of the
They take on all of the
dict’s methods and offer ways of interacting with heaps, which they inherit.
Please note that the
heapdict module will not be automatically installed for us. We have to use the command that is shown below to configure
pip install heapdict
After the completion of the installation of the
heapdict library, we are now ready to make use of it in the process of implementing the priority queue.
- The first step is to import the library of
- Make a variable that will be used to invoke the
heapdictfunction, and continue using the variable for priority.
- At this point, we will use the function we developed before to assign priorities to each task.
- Utilize a
- Display the result by printing the variable.
The whole code can be written in the following form.
import heapdict tasks = heapdict.heapdict() tasks['Breakfast'] = 3 tasks['Wake up'] = 1 tasks['Get ready for work'] = 4 tasks['Exercise'] = 2 while tasks: print(tasks.popitem())
('Wake up', 1) ('Exercise', 2) ('Breakfast', 3) ('Get ready for work', 4)
The output of the code demonstrates that the code is functioning correctly according to the priority order assigned to various tasks in the code. The output of our activities follows the same order and indicates the proper priority.
This article taught us how to build a priority queue by utilizing a list. In addition to that, we went through the steps necessary to create a custom priority queue in Python.
We are now aware of how to implement a custom comparator function with the priority queue.
We hope you find this article helpful in understanding how to create a custom priority queue in Python.