web-dev-qa-db-fra.com

Comment convertir une liste de tuples valeur-clé dans un dictionnaire?

J'ai une liste qui ressemble à:

[('A', 1), ('B', 2), ('C', 3)]

Je veux le transformer en un dictionnaire qui ressemble à:

{'A': 1, 'B': 2, 'C': 3}

Quelle est la meilleure façon de s'y prendre?

EDIT: Ma liste de tuples est en fait plus comme:

[(A, 12937012397), (BERA, 2034927830), (CE, 2349057340)]
115
Fred Wilson

Cela me donne la même erreur que d'essayer de scinder la liste et de la compresser. ValueError: l'élément de séquence de mise à jour de dictionnaire n ° 0 a une longueur de 1916; 2 est requis

C’est votre question réelle .

La réponse est que les éléments de votre liste ne sont pas ce que vous pensez qu'ils sont. Si vous tapez myList[0], Vous constaterez que le premier élément de votre liste n’est pas un deux -uple, par exemple. ('A', 1), Mais plutôt un itérable de 1916.

Une fois que vous avez la liste que vous avez indiquée dans votre question initiale (myList = [('A',1),('B',2),...]), il ne vous reste plus qu'à dict(myList).

83
ninjagecko
>>> dict([('A', 1), ('B', 2), ('C', 3)])
{'A': 1, 'C': 3, 'B': 2}
152
Andreas Jung

Avez-vous essayé cela?

>>> l=[('A',1), ('B',2), ('C',3)]
>>> d=dict(l)
>>> d
{'A': 1, 'C': 3, 'B': 2}
28
Useless

Voici un moyen de gérer les "clés" de tuple en double:

# An example
l = [('A', 1), ('B', 2), ('C', 3), ('A', 5), ('D', 0), ('D', 9)]

# A solution
d = dict()
[d [t [0]].append(t [1]) if t [0] in list(d.keys()) 
 else d.update({t [0]: [t [1]]}) for t in l]
d

OUTPUT: {'A': [1, 5], 'B': [2], 'C': [3], 'D': [0, 9]}
4
Tam Le

Une autre façon en utilisant la compréhension de liste,

>>> t = [('A', 1), ('B', 2), ('C', 3)]
>>> d = [{ i:j for i,j in t }]
>>> d
[{'A': 1, 'C': 3, 'B': 2}]
0
Arun