Ausführliche Erklärung zum Sortieren von Wörterbuchelementen in einer Liste mithilfe der Python-Programmierung

黄舟
Freigeben: 2017-05-28 11:12:17
Original
2116 Leute haben es durchsucht

In diesem Artikel wird hauptsächlich die PythonProgrammierung zum Sortieren von Wörterbuchelementen in einer Liste vorgestellt, wobei Pythons Bedienfähigkeiten im Zusammenhang mit dem Durchlaufen, Lesen und Konvertieren von Listen- und Wörterbuchelementen berücksichtigt werden Wer es braucht, kann sich darauf beziehen

Das Beispiel in diesem Artikel beschreibt die Methode zum Sortieren von Wörterbuchelementen in der Liste mithilfe der Python-Programmierung. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Inhaltsverzeichnis:

Ursprung des Problems
2 die Liste
3. Vergleichen Sie json (die Reihenfolge der Wörterbücher in der Liste ignorieren)

1. Ursprung des Problems

jsonObjekta,b


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

Eigenschaften: Die Schlüsselwerte entsprechen den Schlüsseln in den entsprechenden Python-Objekten zu a und b – die Liste enthält dieselben Wörterbuchelemente, der einzige Unterschied besteht in der Reihenfolge. So erkennen Sie, ob zwei JSONs gleich sind, wenn die Reihenfolge ignoriert wird. Da sich das Wörterbuch selbst nach Schlüssel sortiert und die Liste in der Reihenfolge der Verknüpfung sortiert ist, lässt es sich leicht sortieren, wenn Sie die Wörterbuchelemente in der Liste sortieren. Wenn die Liste gewöhnliche Elemente enthält (kein Wörterbuch), kann die Liste durch die Kombination von list(set()) gelesen und sortiert werden , list(set kann nicht verwendet werden) ())-Kombination, siehe Eingabeaufforderung:


>>> 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: &#39;dict&#39;
Nach dem Login kopieren

Die Eingabeaufforderung lautet, dass das Wörterbuch ein Typ ist, der nicht gehasht werden kann (normalerweise nicht). -Dictionary-Elemente können leicht gehasht und sortiert werden).

Dann besteht das Problem im Wesentlichen darin, wie die Wörterbuchelemente in der Liste sortiert werden sollen.

2. Sortieren Sie die Wörterbuchelemente in der Liste

Glücklicherweise hat die Liste die Sortierunged Funktion , versuchen Sie es


>>> p = [{&#39;b&#39;: 2}, {&#39;a&#39;: 1, &#39;c&#39;: 3}]
>>> q = [{&#39;a&#39;: 1, &#39;c&#39;: 3}, {&#39;b&#39;: 2}]
>>> p
[{&#39;b&#39;: 2}, {&#39;a&#39;: 1, &#39;c&#39;: 3}]
>>> q
[{&#39;a&#39;: 1, &#39;c&#39;: 3}, {&#39;b&#39;: 2}]
>>> pp = sorted(p)
>>> qq = sorted(q)
>>> pp
[{&#39;b&#39;: 2}, {&#39;a&#39;: 1, &#39;c&#39;: 3}]
>>> qq
[{&#39;b&#39;: 2}, {&#39;a&#39;: 1, &#39;c&#39;: 3}]
>>> pp == qq
True
>>> p == q
False
Nach dem Login kopieren

Sie können sehen, dass es in Ordnung ist, und Sie können sehen, dass das Prinzip der Sortierung die Anzahl der Elemente ist.

3. JSON vergleichen (die Reihenfolge der Wörterbücher in der Liste ignorieren)


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 = &#39;{"ROAD": [{"id": 123}, {"name": "no1"}]}&#39;
  b = &#39;{"ROAD": [{"name": "no1"}, {"id": 123}]}&#39;
  print compare_json(a, b)
Nach dem Login kopieren

Details: Wenn Sie das JSON-Format selbst schreiben, ist a = "{'road':1}" json.loads(a) falsch, Sie müssen es als a = '{"road:1}' schreiben [Einfache Anführungszeichen sind ausgeschlossen]

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung zum Sortieren von Wörterbuchelementen in einer Liste mithilfe der Python-Programmierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!