0

Pythonでこのような辞書を作成することは可能ですか?

{'string':[(a,b),(c,d),(e,f)], 'string2':[(a,b),(z,x)...]}

最初のエラーは解決しました、ありがとう! しかし、私は for ループでタプルを実行しているので、常に変化します。私がやろうとすると:

d[key].append(c)

c はタプルです。

私は今、別のエラーが発生しています:

AttributeError: 'tuple' object has no attribute 'append'

すべての回答をありがとう、私はそれを正しく動作させることができました!

4

1 に答える 1

2

そのような方法で辞書を作成する必要がある理由はありますか? 簡単に定義できます

d = {'string': [('a', 'b'), ('c', 'd'), ('e', 'f')], 'string2': [('a', 'b'), ('z', 'x')]}

新しいエントリが必要な場合:

d['string3'] = [('a', 'b'), ('k', 'l')]

また、リストの 1 つにタプルを追加する場合は、次のようにします。

d['string2'].append(('e', 'f'))

質問がより明確になったので、ループを使用して辞書を作成するだけです。リストのキーを事前に知っていると仮定しますkeys

d = {}

for k in keys:
    d[k] = []

    # Now you can append your tuples if you know them.  For instance:
    # d[k].append(('a', 'b'))

最初に辞書を作成したいだけの場合は、辞書内包表記もあります。

d = {k: [] for k in keys}

答えてくれてありがとう。しかし、defaultdict を使用してこれを行う方法はありますか?

from collections import defaultdict

d = defaultdict(list)

for i in 'string1','string2':
   d[i].append(('a','b'))

または、次を使用できますsetdefault

 d = {}
 for i in 'string1','string2':
     d.setdefault(i, []).append(('a','b'))
于 2013-09-07T20:26:22.747 に答える