だから私は数日前にPythonでSetsを発見しましたが、多くのことを本当に単純にしているにもかかわらず、Setsが以前は私の頭に浮かんだことがなかったことに驚いています。後で例を示します。
まだはっきりしないことがいくつかあります。ドキュメントによると、セットは反復可能オブジェクトから作成でき、演算子は常に新しいセットを返しますが、すべてのデータをあるセットから別のセットに、そして反復可能オブジェクトから常にコピーしますか?私は多くのデータを処理しており、itertoolsのように動作する集合と集合演算子が欲しいです。したがって、Sets([iterable])はラッパーに似ており、演算子union、intersectionなどは「iSets」を返し、データをコピーしません。私が最終セットを繰り返すと、それらはすべて評価されます。結局、私は本当に「iSet」演算子が欲しいです。
目的: mongoengineを使用してMongoDBを操作します。記事を保存しました。一部はユーザーに関連付けられ、一部は既読としてマークされ、その他はユーザーに表示されます。すべてのデータをロードしないセットでそれらをラップすることは、それらを結合したり、交差させたりするための優れた方法です。明らかに、特別なクエリを作成することはできますが、MongoDBは結合をサポートしていないため、常にそうとは限りません。だから私はPythonで結合を行うことになります。リレーショナルデータベースを使用できることはわかっていますが、それほど頻繁に結合する必要はなく、私の場合はMongoDBの利点がそれらを上回ります。
それで、あなたはどう思いますか?すでにサードパーティのモジュールはありますか?itertoolsとSetsを組み合わせた数行でうまくいくでしょうか?
編集: それは明らかに正しいので、私はMartijnPietersによる答えを受け入れました。結局、IDのみをセットにロードしてそれらを操作することになりました。また、Pythonのセットの実行時間はかなり良好です。