2013-02-27 5 views
9

में पहले उच्च प्राथमिकता वाले प्राथमिकता कतार मुझे प्राथमिकता कतार की आवश्यकता है जो आइटम को सर्वोच्च प्राथमिकता मान के साथ पहले प्राप्त करता है। मैं वर्तमान में Queue लाइब्रेरी से PriorityQueue क्लास का उपयोग कर रहा हूं। हालांकि, यह फ़ंक्शन केवल सबसे कम मूल्य वाले आइटम लौटाता है। मैंने कुछ बदसूरत समाधानों की कोशिश की जैसे (sys.maxint - प्राथमिकता) प्राथमिकता के रूप में, लेकिन यह सोच रहा था कि एक और सुरुचिपूर्ण समाधान मौजूद है या नहीं।पायथन

उत्तर

15

इसके बजाय नकारात्मक प्राथमिकता का उपयोग करें, sys.maxint से घटाने की कोई आवश्यकता नहीं है।

queue.put((-priority, item)) 

प्राथमिकता -10 वाले आइटम को प्राथमिकता -5 के साथ आइटम से पहले वापस कर दिया जाएगा, उदाहरण के लिए।

+0

हालांकि यह काम करता है, यह ईमानदारी से मुझे परेशान करता है क्योंकि इसका तात्पर्य है कि अन्य सभी संबंधित तर्क आपके सिर में उलट दिए गए हैं। – blueman

+1

@blueman: फिर कतार वर्ग को उप-वर्ग करें और आपके लिए प्राथमिकता को बदलने के तरीकों को ओवरराइड करें। –