138 votes

Comment convertir une liste de tuples clé-valeur en 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 procéder?

EDIT : Ma liste de tuples ressemble plus à :

 [(A, 12937012397), (BERA, 2034927830), (CE, 2349057340)]

J'obtiens l'erreur ValueError: dictionary update sequence element #0 has length 1916; 2 is required

179voto

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

33voto

Useless Points 18909

Avez-vous essayé cela?

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

13voto

Tam Le Points 274

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]}

9voto

Si Tuple n'a pas de répétitions de touches, c'est simple.

 tup = [("A",0),("B",3),("C",5)]
dic = dict(tup)
print(dic)

Si le tuple a des répétitions de clé.

 tup = [("A",0),("B",3),("C",5),("A",9),("B",4)]
dic = {}
for i, j in tup:
    dic.setdefault(i,[]).append(j)
print(dic)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X