Cómo convertir la tupla:tupla a dict: una de las claves y valores múltiples
t=(('1','a'), ('1','A'), ('2','b'), ('2','B'), ('3','c'),('3', 'C'))
en un diccionario:
que he probado en una consola:
>>> d={}
>>> t[0]
(1, 'a')
>>> d[t[0][0]]=t[0][1]
>>> d
{1: 'a'}
>>> t[0][0] in d
True
>>> d[t[1][0]]=t[1][1]
>>> d
{1: 'A'}
>>> d[t[0][0]]=t[0][1]
>>> d[t[1][0]]=d[t[1][0]],t[1][1]
>>> d
{1: ('a', 'A')}
Ahora el siguiente script falla al hacer el trabajo:
t=(('1','a'), ('1','A'), ('2','b'), ('2','B'), ('3','c'),('3', 'C'))
print "{'1':('a','A'),'2':('b','B'),'3':('c','C')} wanted, not:",dict(t)
d={}
for c, ob in enumerate(t):
print c,ob[0], ob[1]
if ob[0] in d:
print 'test'
d[ob[0]]=d[ob[0]],ob[1]
print d
else:
print 'else', d, ob[0],ob[1]
d[ob[0]]=d[ob[1]] # Errror is here
print d
print d
que tienen el error:
Traceback (most recent call last):
File "/home/simon/ProjetPython/python general/tuple_vers_dic_pbkey.py", line 20, in <module>
d[ob[0]]=d[ob[1]]
KeyError: 'a'
Parece ser diferente de $ >>> d [e [0] [0] = t] [0] [1] $. Gracias por su ayuda
JP
PS ¿Hay una mejor manera de hacer la conversión?
'{'1' :('a', 'A') ...' ¿Tiene importancia que tenga una tupla en lugar de una lista como valor? –
Lo siento, me aparece el error: debe ser d [ob [0]] = ob [1] no d [ob [0]] = d [ob [1]] –
@Waleed Khan: no realmente, una lista podría ser bien también. –