8

ジェネレーター(PEP-289)を使用して辞書を作成できます。

dict((h,h*2) for h in range(5))
#{0: 0, 1: 2, 2: 4, 3: 6, 4: 8}

同じdict()呼び出しでいくつかの追加のキーと値のペアを構文的に追加することは可能ですか?次の構文は正しくありませんが、私の質問をよりよく説明しています。

dict((h,h*2) for h in range(5), {'foo':'bar'})
#SyntaxError: Generator expression must be parenthesized if not sole argument

言い換えれば、単一のdict()呼び出しで以下を構築することは可能ですか?

{0: 0, 1: 2, 2: 4, 3: 6, 4: 8, 'foo': 'bar' }
4

3 に答える 3

16

コンストラクタ:

dict(iterableOfKeyValuePairs, **dictOfKeyValuePairs)

例:

>>> dict(((h,h*2) for h in range(5)), foo='foo', **{'bar':'bar'})
{0: 0, 1: 2, 2: 4, 3: 6, 4: 8, 'foo': 'foo', 'bar': 'bar'}

(唯一の引数でない場合は、ジェネレータ式を括弧で囲む必要があることに注意してください。)

于 2012-04-30T21:39:55.320 に答える
1
dict([(h,h*2) for h in range(5)] + [(h,h2) for h,h2 in {'foo':'bar'}.items()])
于 2012-04-30T21:43:50.433 に答える
0

を使用してitertools.chain( Concatenate generator and itemを参照)、余分なものを への呼び出しに追加できますdict()

ただし、簡単な方法で行う方がおそらく明確です。1 回呼び出してからdict、余分な項目を明示的に追加します。

于 2012-04-30T21:38:43.117 に答える