問題タブ [set]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - .Net に "Set" データ構造はありますか?
理想的には、テンプレート化された論理 Set クラスを探しています。ユニオン、インターセクションなどの標準的なセット操作がすべて含まれ、重複したアイテムを折りたたむことができます。
キーを使用するだけで、C# Dictionary<> に基づいて独自のセット クラスを作成することになりました。
python - Pythonでシーケンスからアイテムを削除するエレガントな方法は?
Python でコードを書いているとき、いくつかの基準に基づいて、リストまたはその他のシーケンス タイプから項目を削除する必要があることがよくあります。現在反復しているリストからアイテムを削除するのは悪いことなので、エレガントで効率的な解決策は見つかりませんでした。たとえば、次のことはできません。
私は通常、次のようなことをすることになります:
これは非効率的で、かなり醜く、おそらくバグがあります (複数の 'John Smith' エントリをどのように処理しますか?)。よりエレガントなソリューション、または少なくともより効率的なソリューションを持っている人はいますか?
辞書で動作するものはどうですか?
python - セットから要素を削除せずに取得する方法は?
次のように仮定します。
s
を行わずに値 (任意の値) を取得するにはどうすればよいs.pop()
ですか? アイテムを削除できると確信できるまで、アイテムをセットに残しておきたいと思います。これは、別のホストへの非同期呼び出しの後でのみ確認できます。
クイック&ダーティ:
しかし、もっと良い方法を知っていますか?理想的には一定時間。
c# - .NET C# での set 操作
私は今、ラフセットに関連する何かに取り組んでいます。このプロジェクトでは、多くのセット操作と操作を使用します。セット操作のストップギャップ対策として文字列操作を使用してきました。アルゴリズムを介して、信じられないほどの量のデータ (それぞれ約 40 列以上の 500,000 レコード) を処理する必要があるまでは、問題なく機能しました。
.net 2.0 にはセット データ構造がないことを知っています (私がプロジェクトを開始したときは 2.0 が最新でした)。構造。
ありがとう 。
java - セットからランダムな要素を選択する
セットからランダムな要素を選択するにはどうすればよいですか? Java で、HashSet または LinkedHashSet からランダムな要素を選択することに特に興味があります。他の言語のソリューションも大歓迎です。
python - セットデータをPythonに保存する最良の方法は何ですか?
次の形式のデータのリストがあります。
[(id\__1_, description, id\_type), (id\__2_, description, id\_type), ... , (id\__n_, description, id\_type))
データは、同じグループに属するファイルからロードされます。各グループには、同じ ID が複数存在する可能性があり、それぞれが異なるファイルから取得されます。重複は気にしないので、これをすべて格納する良い方法は Set 型に入れることだと思いました。しかし、問題があります。
同じ ID でも、次のように説明が若干異なる場合があります。
IPI00110753
- チューブリン α-1A チェーン
- チューブリン α-1 鎖
- αチューブリン1
- α-チューブリン アイソタイプ M-α-1
(この例はuniprot タンパク質データベースから取得したことに注意してください。)
説明が異なっていても構いません。私が使用しているタンパク質データベースには、特定の識別子のリストが含まれていない可能性があるため、それらを捨てることはできません. これが発生した場合、人間が読める説明を生物学者に表示できるようにして、彼らが見ているタンパク質を大まかに知ることができるようにしたいと考えています.
現在、辞書型を使用してこの問題を解決しています。ただし、このソリューションは多くのメモリを使用するため、あまり好きではありません (これらの ID が多数あります)。これはそれらの中間のリストにすぎません。ID がデータベースに配置される前に、いくつかの追加処理が行われるため、データ構造を小さく保ちたいと考えています。
本当に2つの質問があります。まず、これには (辞書型よりも) Set 型を使用してメモリ フットプリントを小さくするか、またはリストに挿入するたびに ID が存在するかどうかを確認するソート済みリストを使用するか、または私が考えていなかった3番目の解決策は?第二に、セット型がより良い答えである場合、タプル全体ではなく最初の要素だけを見るようにキーを設定するにはどうすればよいですか?
私の質問を読んでくれてありがとう、
ティム
アップデート
私が受け取ったコメントのいくつかに基づいて、少し明確にさせてください。私がデータ構造で行うことのほとんどは、データ構造への挿入です。1 回は追加情報で注釈を付けるため、もう 1 回はデータベースに挿入するためです。ただし、データベースに挿入する前に追加の注釈が行われる場合があります。残念ながら、現時点でそれが起こるかどうかはわかりません。
現在、ハッシュテーブルに基づいていない構造(つまり、辞書)にこのデータを格納することを検討しています。私は新しい構造が挿入時にかなり迅速であることを望んでいますが、実際には2回しかやらないので、それを読むことは線形になる可能性があります. スペースを節約するために、ハッシュ テーブルから離れようとしています。より良い構造がありますか、それともハッシュテーブルはそれと同じくらい良いですか?
*情報は、uniprot を照会して取得した Swiss-Prot タンパク質識別子のリストです。
java - java.util.Collection の従来のセット操作
java.util.Collection クラスに従来のセット操作の組み込み機能はありますか? 私の特定の実装は ArrayList 用ですが、これは Collection のすべてのサブクラスに適用する必要があるように思えます。私は次のようなものを探しています:
いくつかの検索の後、自家製のソリューションしか見つけることができませんでした。また、「セット」の考え方と「コレクション」の考え方を混同している可能性があることも認識しており、それぞれ重複を許可および許可していません。おそらく、これは本当に Set インターフェイスの機能にすぎないのでしょうか?
組み込み機能を誰も知らない場合は、これを標準的な Java セット操作コードのリポジトリとして使用できますか? この車輪は何度も再発明されたと思います。
java - Common Lisp には、Java の Set Interface/implementing クラスのようなものがありますか?
このようなものが必要です。これは、要素の重複を含まない要素のコレクションです。Common Lisp、特に SBCL には、このようなものがありますか?
sql - SQL カーソル...擁護するユースケースはありますか?
私が先に行きます。
私は 100% セット オペレーション キャンプに参加しています。しかし、目的の入力ドメイン全体に対するセット ロジックによって、クエリが大幅に遅くなったり、クロールになったり、基本的に無限の時間がかかったりするような大規模な検索が行われるとどうなるでしょうか?
これは、おそらく数十行 (私がターゲットにしている数百万行ではなく) のちょっとしたカーソル (または while ループ) を使用する 1 つのケースです。したがって、私はまだ (分割されたサブ) セットで作業していますが、検索はより高速に実行されます。
もちろん、さらに高速な解決策は、分割された入力ドメインを外部から並列に呼び出すことですが、それによって外部システムとの相互作用が発生し、直列にループすることで「十分な」速度を達成できる場合は、価値がないかもしれません。それ(特に開発中)。
java - セット内のオブジェクトの更新
アプリケーションにこのタイプがあるとしましょう:
そして構造。今、私はタイプのオブジェクトを持っていて、次のことをしたいと思っています:Set
<A
>A
- my
A
がセット内にある場合は、そのフィールドb
を更新して my オブジェクトに一致させます。 - それ以外の場合は、セットに追加します。
そのため、そこにあるかどうかを確認するのは簡単です ( contains
)。また、セットに追加するのも簡単です。私の質問は次のとおりです。オブジェクトを更新するためのハンドルを取得するにはどうすればよいですか? インターフェイスにはメソッドSet
がありませんget
。私が考えることができる最善の方法は、セット内のオブジェクトを削除して、私のものを追加することでした。もう 1 つの、さらに悪い方法は、イテレータを使用してセットをトラバースして、オブジェクトを見つけようとすることです。
より良い提案を喜んでお受けします...これには、他のデータ構造の効率的な使用が含まれます。
ユヴァル=8-)
編集:ご回答いただきありがとうございます...残念ながらMap
、この目的のためだけにコレクションのタイプを根本的に変更することは少し極端になるため、ここで a を使用することを提案する最良の回答を「受け入れる」ことはできません(このコレクションは既に Hibernate を介してマップされています...)