Estoy escribiendo esta pregunta a pesar de las muchas respuestas en stackoverflow ya que las soluciones no funcionaron para mi problema.
Tengo 2 listas, List1 y List2. Cuando yo dict(zip(List1,List2)) se altera el orden de los elementos dentro del diccionario.

print s_key
print value
sorted_dict = {k: v for k,v in zip(s_key,value)}
another_test = dict(zip(s_key,value))
print sorted_dict
print another_test
print zip(s_key,value))

Terminal:

[2, 1, 3]
[31, 12, 5]
{1: 12, 2: 31, 3: 5}
{1: 12, 2: 31, 3: 5}
[(2, 31), (1, 12), (3, 5)]

Tenía la impresión de que el [(2, 31), (1, 12), (3, 5)] se convertiría en un dict

¡Cualquier ayuda para entender dónde o qué estoy haciendo mal ayudaría! ¡Gracias!

0
CyberDuck 25 abr. 2017 a las 14:21

2 respuestas

La mejor respuesta
a=[2, 1, 3]
b=[31, 12, 5]
from collections import OrderedDict
print(OrderedDict(zip(a,b)))
5
SmartManoj 25 abr. 2017 a las 11:26

No puede ordenar un diccionario, en su caso, si desea mostrar las claves / valores ordenados de su diccionario, puede convertirlo en una lista de tuplas como lo tiene y ordenarlo por el elemento que desee. En el siguiente código, crea una lista de tuplas y ordena por el primer elemento de las tuplas:

l1,l2=[2, 1, 3],[31, 12, 5]
print ([(one,two) for (one,two) in
        sorted(zip(l1,l2),key=lambda pair: pair[0])])

Huellas:

[(1, 12), (2, 31), (3, 5)]

Agradecimiento a ¿Lista de clasificación basada en valores de otra lista? para la ayuda

O eso, o cree una lista de las claves de los diccionarios y ordene la lista, luego recorra la lista y llame a cada clave

O usa dict ordenada como otras han señalado

0
Community 23 may. 2017 a las 11:33