Método de programação Python para classificar elementos do dicionário em uma lista

@Este artigo vem do número público: csdn2299, como você pode prestar atenção à academia de programadores de números públicos

Este artigo descreve o método de classificação dos elementos do dicionário em uma lista pela programação em Python. Compartilhe com você para sua referência, da seguinte maneira:

Diretório de conteúdo:

  1. Origem do problema
  2. Classificar elementos do dicionário em uma lista
  3. Compare json (ignore a ordem dos dicionários na lista)

1. A origem do problema

objeto json a, b

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

Características: o valor da chave correspondente à chave no objeto Python correspondente a a eb - a lista contém os mesmos elementos do dicionário, mas a única diferença é a ordem. Se você ignorar a ordem, como julgar se os dois json são iguais. Como o próprio dicionário é classificado por chaves, a lista é classificada na ordem em que foi adicionada.Se você classificar os elementos do dicionário na lista, poderá classificar facilmente. Se a lista for um elemento comum (não um dicionário), você poderá ler a lista para classificar na combinação list (set ()) .Se a lista for um elemento de dicionário, você não poderá usar a combinação list (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'

Sugere-se que o dicionário seja um tipo que não possa ser hash (elementos comuns que não são do dicionário podem ser facilmente classificados por hash).

A essência do problema é: como classificar os elementos do dicionário na lista.

Segundo, classifique os elementos do dicionário na lista

Felizmente, a lista classificou a função, tente

>>> 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

Pode-se ver que está bem, e pode-se ver que o princípio da classificação é o número de elementos.

Terceiro, compare o json (ignore a ordem do dicionário na 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)

Detalhes: Ao escrever seu próprio formato json, a = "{'road': 1}" json.loads (a) está errado, você deve escrever a = '{"road: 1}' [As aspas simples estão fora]
Muito obrigado por ler a
universidade Quando optei por estudar python
sozinho, descobri que tinha uma base ruim do computador. Não tinha uma qualificação acadêmica. Isso não é o que fazer. Só posso compensar isso. Então, iniciei meu próprio contra-ataque fora da codificação e continuei aprendendo. Conhecimento básico do Python, estudo aprofundado do conhecimento básico de computador, resolvido, se você não estiver disposto a ser medíocre, junte-se a mim na codificação e continue a crescer!
Na verdade, não há apenas tecnologia aqui, mas também coisas além da tecnologia, Por exemplo, como ser um programador requintado, em vez de "pau de seda", o próprio programador é uma existência nobre, não é? [Clique para participar] Quer ser você mesmo, quer ser uma pessoa nobre, vamos lá!

Publicado 40 artigos originais · elogiou 14 · mais de 20.000 visualizações

Acho que você gosta

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