Heim > Artikel > Backend-Entwicklung > Ausführliche Erklärung zum Sortieren von Wörterbuchelementen in einer Liste mithilfe der Python-Programmierung
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: 'dict'
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 = [{'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
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 = '{"ROAD": [{"id": 123}, {"name": "no1"}]}' b = '{"ROAD": [{"name": "no1"}, {"id": 123}]}' 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!