Si tengo un diccionario como:
{ 'a': 1, 'b': 2, 'c': 3 }
¿Cómo puedo convertirlo a esto?
[ ('a', 1), ('b', 2), ('c', 3) ]
¿Y cómo puedo convertirlo a esto?
[ (1, 'a'), (2, 'b'), (3, 'c') ]
Si tengo un diccionario como:
{ 'a': 1, 'b': 2, 'c': 3 }
¿Cómo puedo convertirlo a esto?
[ ('a', 1), ('b', 2), ('c', 3) ]
¿Y cómo puedo convertirlo a esto?
[ (1, 'a'), (2, 'b'), (3, 'c') ]
[tuple(reversed(x)) for x in d.items()]
x
que ya estátuple
en su código (es la naturaleza deitems
producir un iterable detuple
s), sería más simple / rápido hacerlo[x[::-1] for x in d.items()]
; el corte inverso construye directamente un inversotuple
del tamaño adecuado en lugar de hacer que eltuple
constructor se complete de forma iterativa (con sobreasignación y cambio de tamaño al final) atuple
desde unreversed
iterador.k, v
patrón en tales casos.compatibility
etiqueta agregada debido a las diferencias py2.x // py3.xRespuestas:
No está en el orden que desea, pero los dictados no tienen ningún orden específico de todos modos. 1 Ordénelo u organícelo según sea necesario.
Ver: artículos () , iteritems ()
En Python 3.x, no usaría
iteritems
(que ya no existe), sino que usaríaitems
, que ahora devuelve una "vista" en los elementos del diccionario. Consulte el documento Novedades para Python 3.0 y la nueva documentación sobre vistas .1: Se agregó la preservación del orden de inserción para los dictos en Python 3.7
fuente
como nadie más lo hizo, agregaré versiones de py3k:
fuente
Puedes usar listas de comprensión.
te atrapará
[ ('a', 1), ('b', 2), ('c', 3) ]
yEl otro ejemplo.
Lea más sobre las comprensiones de listas si lo desea, es muy interesante lo que puede hacer con ellas.
fuente
Crea una lista de tuplas nombradas
A menudo puede ser muy útil usar namedtuple . Por ejemplo, tiene un diccionario de 'nombre' como claves y 'puntaje' como valores como:
Puede enumerar los elementos como tuplas, ordenados si lo desea, y obtener el nombre y la puntuación de, digamos, el jugador con la puntuación más alta (índice = 0) muy pitónicamente de esta manera:
Como hacer esto:
listar en orden aleatorio o mantener el orden de las colecciones .
en orden, ordenados por valor ('puntuación'):
ordenados con el puntaje más bajo primero:
ordenados con el puntaje más alto primero:
fuente
Lo que queremos es
dict
'sitems()
yiteritems()
métodos.items
devuelve una lista de tuplas (clave, valor). Como las tuplas son inmutables, no se pueden revertir. Por lo tanto, debe iterar los elementos y crear nuevas tuplas para obtener las tuplas invertidas (valor, clave). Para la iteración,iteritems
es preferible ya que utiliza un generador para producir las tuplas (clave, valor) en lugar de tener que mantener toda la lista en la memoria.fuente
y
fuente
Estos son los cambios importantes de Python 3.xy Python 2.x
Para uso de Python3.x
Para uso de Python 2.7
fuente
fuente
Por
keys()
yvalues()
métodos de diccionario yzip
.zip
devolverá una lista de tuplas que actúa como un diccionario ordenado.Manifestación:
fuente
collections.OrderedDict()
eso funciona mejor con múltiples versiones de Python HTTP Requests lib. Aunque no me gusta elzip
nombre de la función como algo vago / sobrecargado.zip
-ificación no es un casting "profundo", es decir, si hay hijos anidados, no se verán afectados. Puede que tenga que rodar su propia recursión.fuente
Una más simple sería
El segundo no es más simple pero sí.
fuente