Skip to content

implementaion of priority queue on python with a dict interface

License

Notifications You must be signed in to change notification settings

nanouasyn/heapdict

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

heapdict

Реализация очереди с приоритетами на Python. Позволяет добавлять элементы, указывая для каждого из них приоритет, чтобы быстро, за константное время, находить элемент с наименьшим (либо наибольшим) приоритетом. Добавление, извлечение элементов, а также изменение приоритета уже имеющихся в очереди элементов осуществляется за логарифмическое время.

Библиотека предоставляет класс HeapDict. В зависимости от параметра maxheap, создаётся коллекция, оптимизированная для быстрого поиска минимального или максимального элементов. Класс реализует интерфейс словаря, ключами которого считаются добавляемые в очередь элементы, а значениями — приоритеты этих элементов. При этом, все добавляемые элементы должны быть уникальными и хэшируемыми, а их приоритеты — сравнимыми между собой. Единственное отличие от словаря заключается в логике работы метода popitem — он извлекает пару из элемента и приоритета с наименьшим (либо наибольшим) приоритетом. Также, для удобства добавлен метод peekitem, возвращающий соответствующую пару, но не извлекающую её из коллекции.

from heapdict import HeapDict

heapdict = HeapDict({'x': 20, 'y': 5, 'z': 10})

print(heapdict) # HeapDict({'x': 20, 'y': 5, 'z': 10})
print(heapdict.peekitem()) # ('y', 5)
print(heapdict.popitem()) # ('y', 5)
print(heapdict) # HeapDict({'x': 20, 'z': 10})

print(heapdict.peekitem()) # ('z', 10)
heapdict['z'] = 50
print(heapdict.peekitem()) # ('x', 20)

About

implementaion of priority queue on python with a dict interface

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages