9

Python 組み込み型には、 docs のpop()setというメソッドがあります。

セットから任意の要素を削除して返します。セットが空の場合、KeyError を発生させます。

この機能のユースケースは思いつきませんでしたlist。インターフェースを実装しようとしているようです。

なぜこれが Python 標準の一部なのですか?

4

1 に答える 1

19

特定の順序で処理するジョブのプールがある場合に使用します。ジョブは 1 回だけ実行する必要がありますが、一度実行すると再度追加できます。

jobs = {job1, job2, job3}

while jobs:
    job = jobs.pop()
    job.process()

潜在的にjob.process()山積みにさらに多くの仕事を追加します。すべてのジョブが処理されると、セットは空になり、ループが終了します。

または、あまり工夫されていない実際の例については、ライブラリのDependencyFinder.find()メソッド(たとえば、 で使用) を参照してください。これは、セットを使用して、まだ処理が必要なディストリビューション プロバイダーを追跡します。distlibpiptodo

dict.popitem()メソッドはメソッドのミラーであり、集合アルゴリズムについて明示的に言及しています。

popitem()セットアルゴリズムでよく使用されるように、辞書を破壊的に反復するのに役立ちます。

が言語に追加される前setは、値を持つ辞書を使用しNoneてセットをエミュレートしていました。

于 2013-10-15T10:26:45.530 に答える