Pythonの優先度キューに優先度が存在するかどうかを確認する方法はありますか?

user7999116

私はPythonに比較的慣れていません。と一緒に作業しようqueue.PriorityQueue() classとしていますが、質問があります。特定の優先順位が存在するかどうかを確認する方法はありますか?

たとえば、私は次のものを持っています(priority, element)

(0,A), (1,B), (2,C), (2,D)

優先順位2が存在するかどうかを確認する方法はありますか?(はい、CDは両方とも2です。)特定の優先度の要素を取得できますか?私は優先順位を持つ要素をしたいのであれば、2それは私を与えるCD

優先キューで私が見た唯一の公式ドキュメントは次のとおりです。優先キューの公式ドキュメント

このクラスに関する他のドキュメントはありますか?私が使用できる方法のように?利用可能なクラス/フィールドの構造?

ブーブー

私の理解では、あなたの最終目標は、同じ優先順位のタスクをリストに入れて一緒に返すことです。そう:

queue.PriorityQueue(私が行った)のコードを見ると、ヒープキューアルゴリズムを実装するモジュールのメソッドheappushheappopメソッドに基づいていることがわかりheapqます。heapqを参照してくださいこのページをもう少し見てみると、heapqを使用して優先度付きキューを実装する方法も示されています。この実装は、すでに追加されたタスクの優先度を変更する機能をサポートし、同じ優先度の複数のタスクを希望どおりに処理しないという点で、必要なものよりも少し複雑です。しかし、これらの変更は簡単に行うことができます。

from heapq import heappush, heappop

class PriorityQueue:
    def __init__(self):
        self._pq = [] # list of entries arranged in a heap
        self._priority_finder = {} # mapping of priority to entries

    def add_task(self, task, priority=0):
        'Add a new task'
        # any tasks with this priority?
        entry = self._priority_finder.get(priority)
        if entry:
            entry[1].append(task)
        else:
            entry = [priority, [task]]
            self._priority_finder[priority] = entry
            heappush(self._pq, entry)

    def pop_task(self):
        'Remove and return the lowest priority tasks. Raise KeyError if empty.'
        if not self._pq:
            raise KeyError('pop from an empty priority queue')
        priority, tasks = heappop(self._pq)
        del self._priority_finder[priority]
        return priority, tasks

    def __bool__(self):
        'return True if any tasks on the queue'
        return True if self._pq else False

pq = PriorityQueue()
pq.add_task('a', 4) # task 'a' with priority 4
pq.add_task('b', 2)
pq.add_task('c', 4)
pq.add_task('d', 2)
pq.add_task('e', 1)
while pq:
    print(pq.pop_task())

プリント:

(1, ['e'])
(2, ['b', 'd'])
(4, ['a', 'c'])

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonで優先度キューの優先度関数を変更するにはどうすればよいですか?

分類Dev

ActiveJobには特定の優先度のキューがありますか?

分類Dev

同じ優先度の複数の要素の場合、Pythonに「Lifo」タイプの優先度キューはありますか?

分類Dev

Androidにはadbでプロセスの優先度を表示する方法がありますか?

分類Dev

C ++さまざまな優先度関数を使用して優先度キューを実装するための最良の方法は何ですか?

分類Dev

JDBCを使用したMySQLの優先度の低い更新-機能するかどうかを確認する方法

分類Dev

値が優先形式であるかどうかを確認する方法

分類Dev

ActiveAdminで親メニューの優先度を設定するにはどうすればよいですか?

分類Dev

同じ優先度で優先度キューに追加される「サイド」オブジェクトを変更することはできますか?

分類Dev

非同期操作を実行する前に優先度を変更する方法はありますか?

分類Dev

誰かが私には、この例では優先度つきキューを説明できますか?

分類Dev

Java優先度付きキューは内部でどのように機能しますか?

分類Dev

優先度の低い割り込みを終了するにはどうすればよいですか?

分類Dev

Mac OS Xでプロセスの優先度を設定する方法はありますか?

分類Dev

Javaのキューから特定の要素を削除する方法(優先キューではありません)

分類Dev

HTMLを表示するためにレコードの優先度をどのように設定しますか?

分類Dev

Scalaで優先度キューのk番目の最小要素を取得するにはどうすればよいですか?

分類Dev

FCMメッセージの優先度を指定するにはどうすればよいですか?

分類Dev

API18以下でロケーションがオンで優先度が高いかどうかを確認する方法

分類Dev

.enforceQoSフラグはどのように優先度を上げますか?

分類Dev

優先度の低いスレッドが優先度の高いスレッドをブロックしているように見えますか?

分類Dev

Linuxソケットを設定するとどのような影響がありますか-高優先度ですか?

分類Dev

Slurmジョブに最大の優先度を設定するにはどうすればよいですか?

分類Dev

HttpRuntime.Cacheオブジェクトのキャッシュアイテムの優先度を取得するにはどうすればよいですか?

分類Dev

優先度キューとソートアルゴリズムのどちらかを決定する

分類Dev

優先度の高いGCMを送信するにはどうすればよいですか?

分類Dev

Android:NFCプロトコルの優先度を変更するにはどうすればよいですか?

分類Dev

プロセスのIO優先度を表示するにはどうすればよいですか?

分類Dev

PHP:配列値に優先度を割り当ててから、その優先度で並べ替えます

Related 関連記事

  1. 1

    Pythonで優先度キューの優先度関数を変更するにはどうすればよいですか?

  2. 2

    ActiveJobには特定の優先度のキューがありますか?

  3. 3

    同じ優先度の複数の要素の場合、Pythonに「Lifo」タイプの優先度キューはありますか?

  4. 4

    Androidにはadbでプロセスの優先度を表示する方法がありますか?

  5. 5

    C ++さまざまな優先度関数を使用して優先度キューを実装するための最良の方法は何ですか?

  6. 6

    JDBCを使用したMySQLの優先度の低い更新-機能するかどうかを確認する方法

  7. 7

    値が優先形式であるかどうかを確認する方法

  8. 8

    ActiveAdminで親メニューの優先度を設定するにはどうすればよいですか?

  9. 9

    同じ優先度で優先度キューに追加される「サイド」オブジェクトを変更することはできますか?

  10. 10

    非同期操作を実行する前に優先度を変更する方法はありますか?

  11. 11

    誰かが私には、この例では優先度つきキューを説明できますか?

  12. 12

    Java優先度付きキューは内部でどのように機能しますか?

  13. 13

    優先度の低い割り込みを終了するにはどうすればよいですか?

  14. 14

    Mac OS Xでプロセスの優先度を設定する方法はありますか?

  15. 15

    Javaのキューから特定の要素を削除する方法(優先キューではありません)

  16. 16

    HTMLを表示するためにレコードの優先度をどのように設定しますか?

  17. 17

    Scalaで優先度キューのk番目の最小要素を取得するにはどうすればよいですか?

  18. 18

    FCMメッセージの優先度を指定するにはどうすればよいですか?

  19. 19

    API18以下でロケーションがオンで優先度が高いかどうかを確認する方法

  20. 20

    .enforceQoSフラグはどのように優先度を上げますか?

  21. 21

    優先度の低いスレッドが優先度の高いスレッドをブロックしているように見えますか?

  22. 22

    Linuxソケットを設定するとどのような影響がありますか-高優先度ですか?

  23. 23

    Slurmジョブに最大の優先度を設定するにはどうすればよいですか?

  24. 24

    HttpRuntime.Cacheオブジェクトのキャッシュアイテムの優先度を取得するにはどうすればよいですか?

  25. 25

    優先度キューとソートアルゴリズムのどちらかを決定する

  26. 26

    優先度の高いGCMを送信するにはどうすればよいですか?

  27. 27

    Android:NFCプロトコルの優先度を変更するにはどうすればよいですか?

  28. 28

    プロセスのIO優先度を表示するにはどうすればよいですか?

  29. 29

    PHP:配列値に優先度を割り当ててから、その優先度で並べ替えます

ホットタグ

アーカイブ