web-dev-qa-db-fra.com

Un liner: créer un dictionnaire à partir d'une liste avec des index comme clés

Je veux créer un dictionnaire à partir d'une liste donnée, en une seule ligne. Les clés du dictionnaire seront des index et les valeurs seront les éléments de la liste. Quelque chose comme ça:

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

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

print(d)

Sortie:

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

Je n'ai pas d'exigences spécifiques quant à la raison pour laquelle je veux n ligne. Je suis juste en train d'explorer python et je me demande si c'est possible.

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

produira

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

enumerate(sequence, start=0)

Renvoie un objet énumérer. sequence doit être une séquence, un itérateur, ou un autre objet prenant en charge l'itération. La méthode next() de l'itérateur renvoyée par enumerate() renvoie un Tuple contenant un compte (de start, la valeur par défaut étant 0) et les valeurs obtenues en itérant sur séquence:

145
glglgl

Avec un autre constructeur, vous avez

a = [51,27,13,56]         #given list
d={i:x for i,x in enumerate(a)}
print(d)
32
kiriloff

Essayez enumerate: il retournera une liste (ou itérateur) de tuples (i, a[i]), à partir duquel vous pouvez construire un dict:

a = [51,27,13,56]  
b = dict(enumerate(a))
print b
14
{x:a[x] for x in range(len(a))}
11

Utilisez simplement la compréhension de liste.

a = [51,27,13,56]  
b = dict( [ (i,a[i]) for i in range(len(a)) ] )
print b
2
Shahrukh khan