Wie man prüft, ob die Schlüssel eines Wörterbuchs in Python sortiert sind

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie prüfen können, ob die Schlüssel (keys) eines Wörterbuchs (dictionary) in Python sortiert sind. Das Lab konzentriert sich auf die Verwendung der sorted()-Funktion in Kombination mit der keys()-Methode, um durch ein Wörterbuch zu iterieren und auf seine Schlüssel in sortierter Reihenfolge zuzugreifen.

Sie beginnen damit, ein Wörterbuch zu erstellen und dann my_dict.keys() zu verwenden, um ein Ansichtsobjekt (view object) zu erhalten, das die Schlüssel enthält. Dieses Ansichtsobjekt wird dann an die sorted()-Funktion übergeben, die eine Liste der alphabetisch sortierten Schlüssel zurückgibt. Schließlich iterieren Sie durch die sortierten Schlüssel und geben jeden Schlüssel zusammen mit seinem entsprechenden Wert aus dem Wörterbuch aus, was zeigt, wie man Wörterbuchschlüssel in einer bestimmten Reihenfolge verarbeitet.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/ControlFlowGroup -.-> python/for_loops("For Loops") python/DataStructuresGroup -.-> python/dictionaries("Dictionaries") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") subgraph Lab Skills python/conditional_statements -.-> lab-559509{{"Wie man prüft, ob die Schlüssel eines Wörterbuchs in Python sortiert sind"}} python/for_loops -.-> lab-559509{{"Wie man prüft, ob die Schlüssel eines Wörterbuchs in Python sortiert sind"}} python/dictionaries -.-> lab-559509{{"Wie man prüft, ob die Schlüssel eines Wörterbuchs in Python sortiert sind"}} python/function_definition -.-> lab-559509{{"Wie man prüft, ob die Schlüssel eines Wörterbuchs in Python sortiert sind"}} python/build_in_functions -.-> lab-559509{{"Wie man prüft, ob die Schlüssel eines Wörterbuchs in Python sortiert sind"}} end

Informationen über sortierte Schlüssel (keys)

In diesem Schritt lernen Sie, wie Sie in Python durch ein Wörterbuch (dictionary) iterieren können, wobei der Schwerpunkt auf dem Zugriff auf die Schlüssel in sortierter Reihenfolge liegt. Wörterbücher in Python sind von Natur aus ungeordnet, was bedeutet, dass die Reihenfolge, in der Sie Elemente hinzufügen, nicht unbedingt die Reihenfolge ist, in der sie gespeichert werden. Es gibt jedoch Situationen, in denen Sie die Schlüssel eines Wörterbuchs in einer bestimmten Reihenfolge verarbeiten müssen, beispielsweise alphabetisch oder numerisch.

Um dies zu erreichen, können Sie die sorted()-Funktion in Kombination mit der keys()-Methode eines Wörterbuchs verwenden. Die keys()-Methode gibt ein Ansichtsobjekt (view object) zurück, das eine Liste aller Schlüssel im Wörterbuch anzeigt. Die sorted()-Funktion nimmt dann diese Liste von Schlüsseln und gibt eine neue Liste mit den Schlüsseln in aufsteigender Reihenfolge zurück.

Beginnen wir mit einem einfachen Beispiel. Erstellen Sie zunächst mit dem VS Code-Editor eine Python-Datei namens sort_keys.py in Ihrem ~/project-Verzeichnis.

## Create a dictionary
my_dict = {"b": 2, "a": 1, "c": 3}

## Get the keys and sort them
sorted_keys = sorted(my_dict.keys())

## Print the sorted keys
print(sorted_keys)

## Iterate through the dictionary using the sorted keys
for key in sorted_keys:
    print(f"Key: {key}, Value: {my_dict[key]}")

In diesem Code:

  • Wir erstellen ein Wörterbuch namens my_dict mit drei Schlüssel-Wert-Paaren. Beachten Sie, dass die Schlüssel nicht in alphabetischer Reihenfolge sind.
  • Wir verwenden my_dict.keys(), um ein Ansichtsobjekt zu erhalten, das die Schlüssel des Wörterbuchs enthält.
  • Wir übergeben dieses Ansichtsobjekt an die sorted()-Funktion, die eine Liste der alphabetisch sortierten Schlüssel zurückgibt.
  • Wir iterieren dann durch die sorted_keys-Liste und geben jeden Schlüssel zusammen mit seinem entsprechenden Wert aus dem Wörterbuch aus.

Um dieses Skript auszuführen, öffnen Sie das Terminal in VS Code und führen Sie den folgenden Befehl aus:

python sort_keys.py

Sie sollten die folgende Ausgabe sehen:

['a', 'b', 'c']
Key: a, Value: 1
Key: b, Value: 2
Key: c, Value: 3

Wie Sie sehen können, werden die Schlüssel jetzt in alphabetischer Reihenfolge verarbeitet. Dieser Ansatz ist nützlich, wenn Sie Wörterbuchdaten auf eine konsistente und vorhersehbare Weise darstellen oder verarbeiten müssen.

Vergleich von keys() und sorted()

Im vorherigen Schritt haben Sie gelernt, wie Sie die sorted()-Funktion in Kombination mit der keys()-Methode verwenden können, um in sortierter Reihenfolge durch ein Wörterbuch (dictionary) zu iterieren. In diesem Schritt werden wir die Unterschiede zwischen der direkten Verwendung von keys() und der Verwendung von sorted() mit keys() genauer untersuchen. Das Verständnis dieser Unterschiede ist entscheidend für das Schreiben von effizientem und lesbarem Python-Code.

Die keys()-Methode gibt ein Ansichtsobjekt (view object) zurück, das eine dynamische Ansicht der Schlüssel (keys) des Wörterbuchs darstellt. Dies bedeutet, dass sich das Ansichtsobjekt an alle Änderungen im Wörterbuch anpasst. Das Ansichtsobjekt selbst ist jedoch keine Liste und unterstützt keine direkte Sortierung.

Andererseits gibt die sorted()-Funktion eine neue Liste zurück, die alle Elemente des Iterierbaren in aufsteigender Reihenfolge enthält. Wenn Sie sorted(my_dict.keys()) verwenden, erstellen Sie eine neue sortierte Liste der Schlüssel des Wörterbuchs, wobei das ursprüngliche Wörterbuch und sein Ansichtsobjekt unverändert bleiben.

Illustrieren wir dies anhand eines Beispiels. Öffnen Sie die Datei sort_keys.py in Ihrem ~/project-Verzeichnis mit dem VS Code-Editor und ändern Sie sie wie folgt:

## Create a dictionary
my_dict = {"b": 2, "a": 1, "c": 3}

## Get the keys view object
keys_view = my_dict.keys()

## Print the keys view object
print("Keys view object:", keys_view)

## Print the sorted keys
sorted_keys = sorted(my_dict.keys())
print("Sorted keys:", sorted_keys)

## Modify the dictionary
my_dict["d"] = 4

## Print the keys view object again
print("Keys view object after modification:", keys_view)

## Iterate through the dictionary using the sorted keys
for key in sorted_keys:
    print(f"Key: {key}, Value: {my_dict[key]}")

In diesem Code:

  • Wir erstellen ein Wörterbuch namens my_dict.
  • Wir erhalten das Ansichtsobjekt der Schlüssel mit my_dict.keys() und speichern es in der Variable keys_view.
  • Wir geben das keys_view-Objekt und die sorted_keys-Liste aus.
  • Wir ändern dann das Wörterbuch, indem wir ein neues Schlüssel-Wert-Paar hinzufügen.
  • Wir geben das keys_view-Objekt erneut aus, um zu zeigen, dass es die Änderungen im Wörterbuch widerspiegelt.
  • Schließlich iterieren wir durch die sorted_keys-Liste und geben die Schlüssel-Wert-Paare aus. Beachten Sie, dass die sorted_keys-Liste unverändert bleibt und die Hinzufügung des Schlüssels "d" nicht widerspiegelt.

Führen Sie nun das Skript mit dem folgenden Befehl aus:

python sort_keys.py

Sie sollten die folgende Ausgabe sehen:

Keys view object: dict_keys(['b', 'a', 'c'])
Sorted keys: ['a', 'b', 'c']
Keys view object after modification: dict_keys(['b', 'a', 'c', 'd'])
Key: a, Value: 1
Key: b, Value: 2
Key: c, Value: 3

Beachten Sie, dass:

  • Das keys_view-Objekt eine dynamische Ansicht der Schlüssel des Wörterbuchs ist. Wenn wir das Wörterbuch ändern, spiegelt das keys_view-Objekt diese Änderungen wider.
  • Die sorted_keys-Liste ist eine statische Liste, die die Schlüssel zum Zeitpunkt ihrer Erstellung enthält. Sie spiegelt die späteren Änderungen am Wörterbuch nicht wider.
  • Die Schleife iteriert nur durch die Schlüssel, die vorhanden waren, als sorted_keys erstellt wurde.

Dieses Beispiel verdeutlicht den wesentlichen Unterschied zwischen keys() und sorted(). keys() bietet eine dynamische Ansicht, während sorted() eine statische sortierte Liste erstellt. Wählen Sie die geeignete Methode je nachdem, ob Sie die Änderungen im Wörterbuch widerspiegeln oder mit einer festen Menge sortierter Schlüssel arbeiten müssen.

Überprüfung der Reihenfolge mit Listenvergleich

In diesem Schritt lernen Sie, wie Sie die Reihenfolge der Schlüssel (keys) in einem Wörterbuch (dictionary) mithilfe eines Listenvergleichs überprüfen können. Dies ist nützlich, wenn Sie sicherstellen müssen, dass die Schlüssel in einer bestimmten Reihenfolge, wie alphabetisch oder numerisch, sind, beispielsweise zu Test- oder Validierungszwecken.

Um die Reihenfolge der Schlüssel zu überprüfen, können Sie die sortierte Liste der Schlüssel mit einer vordefinierten Liste vergleichen, die die erwartete Reihenfolge darstellt. Wenn die beiden Listen identisch sind, bedeutet dies, dass die Schlüssel in der gewünschten Reihenfolge sind.

Ändern Sie die Datei sort_keys.py in Ihrem ~/project-Verzeichnis mit dem VS Code-Editor, um eine Funktion hinzuzufügen, die die Reihenfolge der Schlüssel überprüft:

## Create a dictionary
my_dict = {"b": 2, "a": 1, "c": 3}

def check_key_order(dictionary, expected_order):
    """
    Checks if the keys in the dictionary are in the expected order.
    """
    sorted_keys = sorted(dictionary.keys())
    return sorted_keys == expected_order

## Define the expected order
expected_order = ["a", "b", "c"]

## Check if the keys are in the expected order
is_correct_order = check_key_order(my_dict, expected_order)

## Print the result
print("Is the key order correct?", is_correct_order)

## Example with incorrect order
expected_order_incorrect = ["b", "a", "c"]
is_correct_order_incorrect = check_key_order(my_dict, expected_order_incorrect)
print("Is the key order correct (incorrect order)?", is_correct_order_incorrect)

In diesem Code:

  • Wir definieren eine Funktion namens check_key_order, die ein Wörterbuch und eine Liste mit der erwarteten Reihenfolge als Eingabe nimmt.
  • Innerhalb der Funktion sortieren wir die Schlüssel des Wörterbuchs mit sorted(dictionary.keys()).
  • Wir vergleichen die sortierte Liste der Schlüssel mit der expected_order-Liste mithilfe des ==-Operators.
  • Die Funktion gibt True zurück, wenn die beiden Listen identisch sind, und False sonst.
  • Wir definieren dann eine expected_order-Liste mit der richtigen alphabetischen Reihenfolge.
  • Wir rufen die check_key_order-Funktion mit dem Wörterbuch und der expected_order-Liste auf und geben das Ergebnis aus.
  • Wir bieten auch ein Beispiel mit einer falschen Reihenfolge, um zu zeigen, wie die Funktion funktioniert.

Führen Sie nun das Skript mit dem folgenden Befehl aus:

python sort_keys.py

Sie sollten die folgende Ausgabe sehen:

Is the key order correct? True
Is the key order correct (incorrect order)? False

Diese Ausgabe bestätigt, dass die check_key_order-Funktion korrekt erkennt, ob die Schlüssel in der erwarteten Reihenfolge sind. Diese Technik ist wertvoll für die Validierung von Daten und die Gewährleistung, dass Ihr Code wie erwartet funktioniert, wenn es um Wörterbücher mit bestimmten Anforderungen an die Schlüsselreihenfolge geht.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie durch ein Python-Wörterbuch (dictionary) iterieren und seine Schlüssel (keys) in sortierter Reihenfolge zugreifen können. Wörterbücher sind von Natur aus ungeordnet, aber indem Sie die keys()-Methode verwenden, um ein Ansichtsobjekt (view object) der Schlüssel des Wörterbuchs abzurufen und dann die sorted()-Funktion anwenden, können Sie eine Liste von Schlüsseln in aufsteigender Reihenfolge erhalten.

Diese sortierte Liste kann dann verwendet werden, um durch das Wörterbuch zu iterieren und die Schlüssel-Wert-Paare in der gewünschten Reihenfolge zu verarbeiten. Der Beispielcode hat gezeigt, wie man ein Wörterbuch erstellt, seine Schlüssel alphabetisch sortiert und dann jeden Schlüssel zusammen mit seinem entsprechenden Wert ausgibt, was die praktische Anwendung der Sortierung von Wörterbuchschlüsseln veranschaulicht.