web-dev-qa-db-ja.com

「セットの辞書」の作成

「セットの辞書」に似たものにデータを効率的に格納する必要があります。それぞれの一意のキーに一致する複数の(一意の)値を持つ辞書があります。私のデータのソースは(あまりよくない)構造化XMLです。

私の考えは、いくつかの要素を調べてキーを見つけることです。キーが存在しない場合は、ディクショナリに追加します。すでに存在する場合は、対応するキーに新しい値を追加します。

結果は次のようになります。

{
 'key1': {'1484', '1487', 1488', ...}
 'key2': {'1485', '1486', '1489', ...}
 'key3': {'1490', '1491', '1492', ...}
 ...
}

外出先で新しいキーを追加する必要があります。各セットに一意の値をプッシュする必要があります。辞書全体を繰り返し処理できるようにする必要があります。

これが実現可能かどうかはわかりませんが、誰かが私を正しい方向に押してくれれば、ありがたいです。

10

私はこれをベンチマークするつもりはありませんが、私の経験では、ネイティブ辞書はより高速です

store = {}
for key, value in yoursource:
    try:
        store[key].add(value)
    except KeyError:
        store[key] = {value}
9
Paul Panzer
from collections import defaultdict
mydict = defaultdict(set)
mydict["key1"] |= {'1484', '1487', '1488'}

反復は通常の口述と同じです。

7
Ohjeah