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

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

黄舟
黄舟Original
2017-05-28 11:12:172109Durchsuche

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}]}'

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;

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

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)

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!

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