0

私は課題に取り組んでいます。ディクショナリが重複キーを持ち、同じ値または異なる値を保持できる方法はありますか。これが私がやろうとしていることの例です:

dict = {
        'Key1' : 'Helo', 'World'
        'Key1' : 'Helo'
        'Key1' : 'Helo', 'World'
       }

これをやってみましたが、key1に値を関連付けると、同じkey1に追加されます。これは辞書で可能ですか?そうでない場合、このプロセスを実装するために使用できる他のデータ構造は何ですか?

4

3 に答える 3

3

複数の値を保持するには、リストの辞書を使用します。

キーに複数の値を持たせる 1 つの方法は、リストの辞書を使用することです。

x = { 'Key1' : ['Hello', 'World'],
      'Key2' : ['Howdy', 'Neighbor'],
      'Key3' : ['Hey',   'Dude']
    }

必要なリストを取得する (または新しいリストを作成する) には、setdefault を使用することをお勧めします。

my_list = x.setdefault(key, [])

例:

>>> x = {}
>>> x['abc'] = [1,2,3,4]
>>> x
{'abc': [1, 2, 3, 4]}
>>> x.setdefault('xyz', [])
[]
>>> x.setdefault('abc', [])
[1, 2, 3, 4]
>>> x
{'xyz': [], 'abc': [1, 2, 3, 4]}

defaultdict同じ機能に使用

これをさらに簡単にするために、collections モジュールにはこれを単純化するdefaultdictオブジェクトがあります。コンストラクター/ファクトリーを渡すだけです。

from collections import defaultdict
x = defaultdict(list)
x['key1'].append(12)
x['key1'].append(13)

辞書の辞書やセットの辞書を使用することもできます。

>>> from collections import defaultdict
>>> dd = defaultdict(dict)
>>> dd
defaultdict(<type 'dict'>, {})
>>> dd['x']['a'] = 23
>>> dd
defaultdict(<type 'dict'>, {'x': {'a': 23}})
>>> dd['x']['b'] = 46
>>> dd['y']['a'] = 12
>>> dd
defaultdict(<type 'dict'>, {'y': {'a': 12}, 'x': {'a': 23, 'b': 46}})
于 2013-11-09T01:58:46.783 に答える
0

私はあなたが欲しいと思いますcollections.defaultdict

from collections import defaultdict
d = defaultdict(list)
list_of_values = [['Hello', 'World'], 'Hello', ['Hello', 'World']]
for v in list_of_values:
    d['Key1'].append(v)

print d

これは重複キーを処理し、キーを上書きする代わりに、その値のリストに何かを追加します。

于 2013-11-09T02:05:05.170 に答える
0

キーはデータに固有です。キーに他の値を使用するか、別のデータ構造を使用してこのデータを保持することを検討してください。

例えば:

  • 複数の人がそこに住んでいる可能性があるため、人の住所を一意のキーとして使用しないでください。
  • 個人の社会保障番号または運転免許証は、個人の一意の ID としてははるかに優れています。
  • 独自の ID を作成して、強制的に一意にすることができます。
于 2013-11-09T02:26:08.650 に答える