J'ai un tuple comme ça

([(a,),(b,),...],[(x,),(y,),...])

Je veux le transformer en un dictionnaire comme celui-ci:

sozluk={"a":x,"b":y,...}

Je recherche un moyen pratique de réaliser que

-1
automatickebab 3 juin 2020 à 18:38

3 réponses

Meilleure réponse
t = ([(1,),(2,),(3,)],[('a',),('b',),('c',)])

r = {key[0]: value[0] for key, value, in zip(t[0],t[1])}

2
Дмитрий Пасько 3 juin 2020 à 15:44

Habituellement, un simple zip devrait fonctionner, mais dans votre cas, chaque élément est un tuple au lieu d'un seul élément. Donc ici, j'utilise un simple list comprehension pour convertir le tuple en clés et valeurs, puis créer le dictionnaire basé sur ceux avec un simple zip (en savoir plus):

>>> t = ([("a",),("b",)], [("x",),("y",)])
>>> keys = [i[0] for i in t[0]]
>>> keys
['a', 'b']
>>> values = [i[0] for i in t[1]]
>>> values
['x', 'y']
>>> dict(zip(keys, values))
{'a': 'x', 'b': 'y'}
0
nima72 3 juin 2020 à 15:47

Cela fonctionne également en Python2.7 et Python3 (j'utilise 'pour créer une chaîne au lieu d'une variable, juste pour le test):

    q = ([('a',),('b',)],[('x',),('y',)])
    print({k[0]:v[0] for k,v in zip(*q)})

    {'a': 'x', 'b': 'y'}
1
Ivan Paterno 3 juin 2020 à 15:47