Método de programación de Python para ordenar elementos del diccionario en una lista

@Este artículo proviene del número público: csdn2299, como si pudieras prestar atención a la academia de programadores de números públicos

Este artículo describe el método de ordenar los elementos del diccionario en una lista por programación de Python. Comparta con usted para su referencia, de la siguiente manera:

Directorio de contenido:

  1. Origen del problema
  2. Ordenar elementos del diccionario en una lista
  3. Compare json (ignore el orden de los diccionarios en la lista)

1. El origen del problema.

json objeto a, b

a = '{"ROAD": [{"id": 123}, {"name": "no1"}]}'
b = '{"ROAD": [{"name": "no1"}, {"id": 123}]}'

Características: el valor de la clave correspondiente a la clave en el objeto Python correspondiente a a y b-la lista contiene los mismos elementos del diccionario, pero la única diferencia es el orden. Si ignora el orden, cómo juzgar si los dos json son iguales. Debido a que el diccionario en sí está ordenado por teclas, la lista se ordena en el orden en que se agregó. Si ordena los elementos del diccionario en la lista, puede ordenarlos fácilmente. Si la lista es un elemento ordinario (no un diccionario), puede leer la lista para ordenar la combinación de la lista (set ()). Si la lista es un elemento del diccionario, no puede usar la combinación de la lista (set ()).

>>> a = [{'a':1, 'b':2}, {'c':3}]
>>> a
[{'a': 1, 'b': 2}, {'c': 3}]
>>> b = set(a)
Traceback (most recent call last):
 File "<pyshell#2>", line 1, in <module>
  b = set(a)
TypeError: unhashable type: 'dict'

Se sugiere que el diccionario sea de un tipo que no se puede dividir en hash (los elementos comunes que no son del diccionario se pueden clasificar fácilmente por hash).

Entonces la esencia del problema es: cómo ordenar los elementos del diccionario en la lista.

Segundo, ordena los elementos del diccionario en la lista

Afortunadamente, la lista tiene una función ordenada, intente

>>> p = [{'b': 2}, {'a': 1, 'c': 3}]
>>> q = [{'a': 1, 'c': 3}, {'b': 2}]
>>> p
[{'b': 2}, {'a': 1, 'c': 3}]
>>> q
[{'a': 1, 'c': 3}, {'b': 2}]
>>> pp = sorted(p)
>>> qq = sorted(q)
>>> pp
[{'b': 2}, {'a': 1, 'c': 3}]
>>> qq
[{'b': 2}, {'a': 1, 'c': 3}]
>>> pp == qq
True
>>> p == q
False

Se puede ver que está bien, y se puede ver que el principio de clasificación es el número de elementos.

Tercero, compare el json (ignore el orden del diccionario en la lista)

import json
def compare_json(a, b):
  aa = json.loads(a)
  bb = json.loads(b)
  len_a = len(aa)
  len_b = len(bb)
  if len_a != len_b:
    return False
  else:
    for key in aa:
      if not bb.has_key(key):
        return False
      else:
        if sorted(aa[key]) != sorted(bb[key]):
          return False
  return True
if __name__ == "__main__":
  a = '{"ROAD": [{"id": 123}, {"name": "no1"}]}'
  b = '{"ROAD": [{"name": "no1"}, {"id": 123}]}'
  print compare_json(a, b)

Detalles: al escribir su propio formato json, a = "{'road': 1}" json.loads (a) está mal, debe escribir a = '{"road: 1}' [Las comillas simples están fuera]
Muchas gracias por leer la
universidad Cuando elegí estudiar Python
por mí mismo, descubrí que me comía una mala base de la computadora. No tenía una calificación académica. Esto no es nada que hacer. Solo puedo compensarlo. Así que comencé mi propio contraataque fuera de la codificación y seguí aprendiendo. Conocimiento básico de Python, estudio en profundidad del conocimiento básico de la computadora, resuelto, si no está dispuesto a ser mediocre, ¡únase a mí en la codificación y continúe creciendo!
De hecho, no solo hay tecnología aquí, sino también cosas más allá de la tecnología, Por ejemplo, cómo hacer que un programador bien, en lugar de "alambre de Gallo", el programador sí es un noble presencia, ah, ¿no es así? [clic para entrar] desea que desea ser una persona noble, vamos!

Publicó 40 artículos originales · elogió 14 · 20,000+ visitas

Supongo que te gusta

Origin blog.csdn.net/chengxun03/article/details/105497984
Recomendado
Clasificación