タグ付けされた質問 「dictionary」

5
なぜPython辞書内に関数を保存するのですか?
私はpython初心者であり、辞書と関数を含むテクニックを学びました。構文は簡単で、些細なことのように思えますが、私のPythonの感覚はチクチクしています。これは深くて非常にパイソン的な概念であり、その重要性を十分に把握していないということです。誰かがこのテクニックに名前を付けて、どのように/なぜそれが役立つかを説明できますか? テクニックは、Python辞書とそれに使用する予定の関数がある場合です。値が関数の名前である追加の要素を辞書に挿入します。関数を呼び出す準備ができたら、名前ではなく、dict要素を参照して間接的に呼び出しを発行します。 私が取り組んでいる例は、Learn Python the Hard Way、2nd Edのものです。(これは、Udemy.comからサインアップしたときに利用可能なバージョンです。残念ながら、ライブの無料HTMLバージョンは現在Ed 3であり、この例は含まれていません)。 言い換えると: # make a dictionary of US states and major cities cities = {'San Diego':'CA', 'New York':'NY', 'Detroit':'MI'} # define a function to use on such a dictionary def find_city (map, city): # does something, returns some value if city in …


5
Pythonで辞書とタプルを使用する場合
特定の例は、ファイル名とそのサイズのリストです。リストの各アイテムがフォーム{"filename": "blabla", "size": 123}であるべきか、それともただであるべきであるか決定できません("blabla", 123)。たとえば、サイズにアクセスすることfile["size"]は、file[1]... よりも説明が多いため、辞書は私にとってより論理的なように思えますが、確かにわかりません。考え?

8
TryGetValueよりもC#辞書を使用するより良い方法はありますか?
私はよくオンラインで質問を探しますが、多くのソリューションには辞書が含まれています。しかし、それらを実装しようとするたびに、コードにこの恐ろしい悪臭が入ります。たとえば、値を使用するたびに: int x; if (dict.TryGetValue("key", out x)) { DoSomethingWith(x); } これは、基本的に次のことを行う4行のコードです。 DoSomethingWith(dict["key"]) outキーワードを使用すると、関数のパラメーターが変化するため、アンチパターンであると聞きました。 また、キーと値を反転させる「逆」辞書が必要になることがよくあります。 同様に、辞書の項目を繰り返し処理して、キーまたは値をリストなどに変換して、これを改善したいと思うことがよくあります。 辞書を使用するより良い、よりエレガントな方法はほとんど常にあるように感じますが、私は途方に暮れています。

5
クエリのために何千万ものオブジェクトを格納するための効率的な方法で、1秒あたりの挿入数が多いですか?
これは基本的に、p2pチャットネットワークでパケットの数をカウントし、パケットのタイプなどをカウントしているロギング/カウントアプリケーションです。これは、5分間で約400〜600万パケットに相当します。また、この情報の「スナップショット」のみを取得するため、5分ごとに5分以上経過したパケットのみを削除しています。したがって、このコレクションに含まれるアイテムの最大数は1,000万から1200万です。 異なるスーパーピアに300接続する必要があるため、各パケットが少なくとも300回挿入されようとしている可能性があります(おそらく、このデータをメモリに保持することが唯一の妥当なオプションである理由です)。 現在、私はこの情報を保存するために辞書を使用しています。しかし、大量のアイテムを保存しようとしているため、大きなオブジェクトヒープで問題が発生し、メモリの使用量は時間とともに継続的に増加します。 Dictionary<ulong, Packet> public class Packet { public ushort RequesterPort; public bool IsSearch; public string SearchText; public bool Flagged; public byte PacketType; public DateTime TimeStamp; } mysqlを使用しようとしましたが、挿入する必要があるデータ量に対応できませんでした(重複していないことを確認しながら)。それはトランザクションの使用中です。 私はmongodbを試しましたが、そのためのCPU使用は非常識で、どちらも保持しませんでした。 5分以上経過したすべてのパケットを削除し、このデータの「スナップショット」を取得するため、私の主な問題は5分ごとに発生します。LINQクエリを使用して、特定のパケットタイプを含むパケットの数をカウントしているため。また、データのdistinct()クエリを呼び出しています。ここでは、keyvaluepairのキーから4バイト(IPアドレス)を取り除き、keyvalupairのValueのrequestingport値と組み合わせて、それを使用して、すべてのパケットからのピア。 アプリケーションは現在、約1.1GBのメモリ使用量を保持しており、スナップショットが呼び出されると、使用量を2倍にまで増やすことができます。 これで、異常な量のRAMがあれば問題になりませんが、現在実行しているvmは2GBのRAMに制限されています。 簡単な解決策はありますか?

1
C#辞書の効率
C#辞書は、何かが存在するかどうかなどを見つける簡単な方法です。どのように機能するかについては質問があります。辞書の代わりにArrayListを使用するとしましょう。ContainsKey(または別の言語の同等のメソッド)を使用する代わりに、ArrayListをループして、そこに何かが存在するかどうかを確認します(または、データが並べ替えられているか、類似のものであればバイナリ検索を実行します)。効率の違いは何ですか?ContainsKeyメソッドは、キーをループして検索しているものが存在するかどうかをチェックするのではなく、より効率的な方法を使用していますか? 私が持っているデータの種類に対応する特定のハッシュ関数を作成し、そのデータのセット用に特別に設計されている場合、そのハッシュ関数はデータをループするよりも実際に高速です。しかし、辞書は一般的です。ContainsKeyメソッドは、取得するデータに固有ではなく、一般的な検索メソッドです。 基本的に私が求めているのは。辞書はプログラマーに役立ちます。それらには、多くのことを支援するメソッドが含まれており、文字列を整数(キーと値)などと組み合わせています。しかし、効率については、彼らは何を提供していますか?持つに違い何dictionary対ArrayListのをstructs(string,int)

4
C#のハッシュテーブルと辞書の実用的なサイズ制限
C#4ディクショナリまたはHashtableに含めることができるアイテムの数と、これらの構造に合理的に含めることができる合計バイト数の実際的な制限は何ですか。多数のオブジェクトを使用して、これらの構造がいつ問題を起こし始めるかを知りたいと思います。 コンテキストでは、大量のメモリを備えた64ビットシステムを使用します。また、何らかのフォームまたは「キー」を使用してオブジェクトを見つける必要があります。パフォーマンスの要求を考えると、これらのオブジェクトはメモリに常駐する必要があり、多くは存続します。 サードパーティまたはオープンソースのライブラリを使用しないようにする必要がありますが、他のアプローチ/パターンを自由に提案してください。仕様上の理由から、ネイティブC#(またはC ++ \ CLI)を使用してこれをビルドできる必要があります。

3
Python 3.4以降では、dictを使用しないときにSimpleNamespaceでnamedtupleを使用する必要があるのはなぜですか?
ある時点で、多くの引数を持つ関数を見つけるかもしれません。いくつかの引数を組み合わせてスーパー引数にすることが理にかなっている場合があります。私はこれを口述筆記で頻繁に行ってきましたが、今はよりよい方法を検討しています。 回したい... def do_something(ax, ay, az, bu, bv, c): # Do something ...に... def do_something(a, b, c): # Do something ...場所aとbそのサブバリエーションを含みます。 これを行う1つの方法は、次のことです。 A = namedtuple('A', 'x, y, z') a = A(ax, ay, az) B = namedtuple('B', 'u, v') b = B(bu, bv) ただし、これはより簡単に見えます。 a = SimpleNamespace(x=ax, y=ay, z=az) b = …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.