Para la tupla, t = ((1, 'a'),(2, 'b'))
dict(t)
vuelve{1: 'a', 2: 'b'}
¿Hay una buena manera de obtener {'a': 1, 'b': 2}
(llaves y vals intercambiados)?
En última instancia, quiero poder regresar 1
dado 'a'
o 2
dado 'b'
, tal vez la conversión a un dict no sea la mejor manera.
python
dictionary
tuples
Jake
fuente
fuente
dict(zip(*zip(*t)[::-1]))
. Esto es más lento, más feo y usa mucha más memoria ... probablemente 3x.dict((x, y) for x, y, z in t)
udict((x, (y, z)) for x, y, z in t)
obtener el segundo y tercer valor como una tupla.Un método un poco más simple:
fuente
reverse
explicado explícitamente.map
es más rápido que una comprensión cuando lo que se está mapeando es otra función incorporada (comoreversed
); en la mayoría de los otros casos, lo contrario es cierto. Pero es mejor perfilar que adivinar :)Aún más conciso si estás en Python 2.7:
fuente
O:
fuente
Si hay varios valores para la misma clave, el siguiente código agregará esos valores a una lista correspondiente a su clave,
fuente
Aquí hay dos formas de hacerlo:
fuente