Buenas noticias, por lo que el caso de uso original del OP, que se extrajo de una base de datos con identificadores de cadena únicos como claves y valores numéricos como valores en un dictado incorporado de Python v3.6 +, debe respetar el orden de inserción.
Cuando dice las expresiones de tabla de dos columnas que resultan de una consulta de base de datos como:
SELECT a_key, a_value FROM a_table ORDER BY a_value;
se almacenaría en dos tuplas de Python, k_seq y v_seq (alineadas con el índice numérico y, por supuesto, con la misma longitud), luego:
k_seq = ('foo', 'bar', 'baz')
v_seq = (0, 1, 42)
ordered_map = dict(zip(k_seq, v_seq))
Déjelo generar más tarde que:
for k, v in ordered_map.items():
print(k, v)
En este caso, ceda (¡para el nuevo diccionario integrado de Python 3.6+!):
foo 0
bar 1
baz 42
en el mismo orden según el valor de v.
La instalación de Python 3.5 en mi computadora produce actualmente:
bar 1
foo 0
baz 42
Detalles:
Según lo propuesto en 2012 por …