Ich möchte aus einer bestimmten Liste ein Wörterbuch erstellen, in nur einer Zeile . Die Schlüssel des Wörterbuchs sind Indizes, und Werte sind die Elemente der Liste. Etwas wie das:

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

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

print(d)

Ausgabe:

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

Ich habe keine spezifischen Anforderungen, warum ich eine Zeile möchte. Ich erforsche nur Python und frage mich, ob das möglich ist.

87
Nawaz 17 Mai 2013 im 15:19

5 Antworten

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

Wird herstellen

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

enumerate(sequence, start=0)

Gibt ein Aufzählungsobjekt zurück. sequence muss eine Sequenz, ein iterator oder ein anderes Objekt sein, das die Iteration unterstützt. Die von enumerate() zurückgegebene next() -Methode des Iterators gibt ein tuple zurück, das eine Anzahl (von start mit dem Standardwert 0) und die Werte enthält, die durch Iteration über sequence :

147
Nawaz 23 Juni 2015 im 17:57

Verwenden Sie einfach das Listenverständnis.

a = [51,27,13,56]  
b = dict( [ (i,a[i]) for i in range(len(a)) ] )
print b
3
zgue 11 Nov. 2018 im 10:10
{x:a[x] for x in range(len(a))}
11
Emilio M Bumachar 17 Mai 2013 im 15:54

Versuchen Sie enumerate: Es wird eine Liste (oder ein Iterator) von Tupeln (i, a[i]) zurückgegeben, aus denen Sie ein dict erstellen können:

a = [51,27,13,56]  
b = dict(enumerate(a))
print b
14
Stefano Sanfilippo 17 Mai 2013 im 11:27

Mit einem anderen Konstruktor haben Sie

a = [51,27,13,56]         #given list
d={i:x for i,x in enumerate(a)}
print(d)
38
kiriloff 17 Mai 2013 im 11:50