Python tiene Queue.PriorityQueue, pero no veo una manera de hacer que cada valor sea único ya que no hay un método para verificar si ya existe un valor (como find (name) o similar). Además, PriorityQueue necesita la prioridad para permanecer dentro del valor, por lo que ni siquiera podría buscar mi valor, ya que también tendría que conocer la prioridad. Utilizaría (0.5, myvalue) como valor en PriorityQueue y luego se ordenaría por el primer elemento de la tupla.¿Cómo puedo hacer una cola de prioridad de valor única en Python?
La clase collections.deque ofrece una función para comprobar si ya existe un valor y es aún más natural en el uso (sin bloqueo, pero aún atómico), pero no ofrece una forma de ordenar por prioridad.
Hay otras implementaciones en stackoverflow con heapq, pero heapq también usa prioridad dentro del valor (por ejemplo, en la primera posición de una tupla), por lo que parece no ser excelente para la comparación de valores existentes.
Creating a python priority Queue
https://stackoverflow.com/questions/3306179/priority-queue-problem-in-python
Cuál es la mejor manera de crear una cola de prioridad atómica (= se puede utilizar a partir de múltiples hilos) con valores únicos?
Ejemplo lo que desea añadir:
- Prioridad: 0.2, Valor: valor1
- Prioridad: 0.3, Valor: valor2
- Prioridad: 0.1, Valor: value3 (deberá ser recuperada primero de forma automática)
- prioridad: 0.4, Valor: valor1 (no se añade de nuevo, a pesar de que tiene una prioridad diferente)
voy a sugerir a no utilizar los nombres de funciones integradas como 'self.set' – sleepsort
quizá emergente es el mejor nombre para conseguir:) – DikobrAz