99

与えられたリストから、1 行で辞書を作成したい。辞書のキーはインデックスになり、値はリストの要素になります。このようなもの:

a = [51,27,13,56]         #given list

d = one-line-statement    #one line statement to create dictionary

print(d)

出力:

{0:51, 1:27, 2:13, 3:56}

1行が必要な理由について、特定の要件はありません。私はちょうどpythonを調べていて、それが可能かどうか疑問に思っています。

4

5 に答える 5

166
a = [51,27,13,56]
b = dict(enumerate(a))
print(b)

生産します

{0: 51, 1: 27, 2: 13, 3: 56}

enumerate(sequence, start=0)

列挙オブジェクトを返します。sequenceは、シーケンス、iterator、または反復をサポートするその他のオブジェクトでなければなりません。によって返される反復子のnext()メソッドは、カウント ( startからのデフォルトは 0) と、sequenceの反復処理から得られた値を含む を返します。enumerate()tuple

于 2013-05-17T11:23:18.300 に答える
58

別のコンストラクターを使用すると、

a = [51,27,13,56]         #given list
d={i:x for i,x in enumerate(a)}
print(d)
于 2013-05-17T11:50:38.697 に答える
18
{x:a[x] for x in range(len(a))}
于 2013-05-17T15:54:02.820 に答える
15

Try enumerate: tuples のリスト (またはイテレータ) が返さ(i, a[i])れ、そこからdict:

a = [51,27,13,56]  
b = dict(enumerate(a))
print b
于 2013-05-17T11:27:16.757 に答える
3

リスト内包表記を使用するだけです。

a = [51,27,13,56]  
b = dict( [ (i,a[i]) for i in range(len(a)) ] )
print b
于 2016-08-27T19:16:26.207 に答える