Esta especie de diccionario conserva el orden de inserción de elementos.
json.load(fp[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])
Deserialize fp (un .read() - apoyar objeto de fichero que contiene un documento JSON) a un objeto Python.
Si el contenido de fp se codifican con una codificación basada ASCII otra de UTF-8 (por ejemplo latino-1), entonces un nombre de codificación apropiada debe ser especificado. Las codificaciones que no están basadas en ASCII (como UCS-2) no están permitidas en , y se deben envolver con codecs.getreader (codificación) (fp) o simplemente se decodifican en un objeto unicode y se pasan a loads().
object_hook es una función opcional que se llamará con el resultado de cualquier objeto decodificado literalmente (un dict). Se usará el valor de retorno de object_hook en lugar del dict. Esta función se puede usar para implementar decodificadores personalizados (por ejemplo, sugerencias de clase JSON-RPC).
object_pairs_hook es una función opcional que se llamará con el resultado de cualquier objeto literal decodificado con una lista ordenada de pares. Se usará el valor de retorno de object_pairs_hook en lugar del dict. Esta característica se puede usar para implementar decodificadores personalizados que dependen de en el orden en que se decodifican los pares clave y de valor (por ejemplo, colecciones .OrderedDict() recordará el orden de inserción). Si también se define object_hook, object_pairs_hook tiene prioridad.
diccionarios de Python no están ordenados, lo cual está bien porque normalmente se accede a las entradas * con la tecla * y si tiene que iterar sobre los elementos, el el orden por lo general no importa. Btw, 's' no es ni una cadena ni un diccionario JSON válido si se trata de una cadena. Parece que buscas una estructura diferente, como una matriz de objetos: '[{" name ":" ... "," price ":" ... "}, ...]'. Si proporciona alguna explicación para * por qué * necesita las claves en orden y proporciona un ejemplo correcto, entonces podemos ayudarlo mejor. –
No existe realmente el "orden de las llaves" en un 'dict'. Puede iterar sobre ellos de a uno por vez, pero no hay control sobre el orden en que los recibe. –
Creo que [esto previo] (http: // stackoverflow.com/questions/6921699/can-i-get-json-to-load-into-a-ordereddict-in-python) pregunta aquí en Stackoverflow proporciona una respuesta. – Alvin