So überprüfen Sie, ob ein Python-Wörterbuch nur bestimmte Typen enthält

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 ein Python-Wörterbuch (dictionary) nur bestimmte Typen für seine Schlüssel und Werte enthält. Das Lab konzentriert sich auf das Verständnis der Wichtigkeit der Typüberprüfung in Wörterbüchern, um die Datenintegrität sicherzustellen.

Sie beginnen damit, ein Beispiel-Wörterbuch zu erstellen und das Konzept der Typüberprüfung zu erkunden. Anschließend lernen Sie, wie Sie die Funktion isinstance() in Verbindung mit der Funktion all() verwenden, um zu überprüfen, ob alle Schlüssel und Werte in einem Wörterbuch den erwarteten Datentypen entsprechen. Diese praktische Erfahrung wird Sie mit den Fähigkeiten ausstatten, um den Inhalt von Wörterbüchern zu validieren und die Zuverlässigkeit Ihres Codes aufrechtzuerhalten.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python/BasicConceptsGroup -.-> python/variables_data_types("Variables and Data Types") python/BasicConceptsGroup -.-> python/type_conversion("Type Conversion") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/DataStructuresGroup -.-> python/dictionaries("Dictionaries") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") subgraph Lab Skills python/variables_data_types -.-> lab-559505{{"So überprüfen Sie, ob ein Python-Wörterbuch nur bestimmte Typen enthält"}} python/type_conversion -.-> lab-559505{{"So überprüfen Sie, ob ein Python-Wörterbuch nur bestimmte Typen enthält"}} python/conditional_statements -.-> lab-559505{{"So überprüfen Sie, ob ein Python-Wörterbuch nur bestimmte Typen enthält"}} python/dictionaries -.-> lab-559505{{"So überprüfen Sie, ob ein Python-Wörterbuch nur bestimmte Typen enthält"}} python/build_in_functions -.-> lab-559505{{"So überprüfen Sie, ob ein Python-Wörterbuch nur bestimmte Typen enthält"}} end

Verständnis der Typüberprüfung in Wörterbüchern

In diesem Schritt werden wir die Wichtigkeit der Typüberprüfung in Python-Wörterbüchern (dictionaries) untersuchen. Wörterbücher sind vielseitige Datenstrukturen, die Schlüssel-Wert-Paare speichern können. Um die Integrität und Zuverlässigkeit Ihres Codes sicherzustellen, ist es jedoch wichtig zu verstehen, wie Sie die Typen der in einem Wörterbuch gespeicherten Schlüssel und Werte überprüfen können.

Wörterbücher in Python werden mit geschweiften Klammern {} definiert. Jedes Element in einem Wörterbuch besteht aus einem Schlüssel und einem entsprechenden Wert, getrennt durch einen Doppelpunkt :.

Beginnen wir damit, ein einfaches Wörterbuch zu erstellen:

## Create a dictionary
my_dict = {
    "name": "Alice",
    "age": 30,
    "city": "New York"
}

print(my_dict)

Speichern Sie den obigen Code in einer Datei namens type_checking.py in Ihrem ~/project-Verzeichnis. Sie können den VS Code-Editor verwenden, um diese Datei zu erstellen und zu bearbeiten.

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

python ~/project/type_checking.py

Sie sollten die folgende Ausgabe sehen:

{'name': 'Alice', 'age': 30, 'city': 'New York'}

In diesem Wörterbuch sind die Schlüssel Strings ("name", "age", "city") und die Werte sind ein String ("Alice"), eine Ganzzahl (30) und ein weiterer String ("New York").

Die Typüberprüfung wird wichtig, wenn Sie sicherstellen möchten, dass die in Ihrem Wörterbuch gespeicherten Daten Ihren Erwartungen entsprechen. Beispielsweise möchten Sie möglicherweise überprüfen, dass das Alter immer eine Ganzzahl ist oder dass der Name immer ein String ist.

Betrachten wir ein Szenario, in dem Sie ein neues Schlüssel-Wert-Paar zum Wörterbuch hinzufügen möchten, aber sicherstellen möchten, dass der Wert einen bestimmten Typ hat.

Öffnen Sie die Datei type_checking.py in VS Code und ändern Sie sie wie folgt:

## Create a dictionary
my_dict = {
    "name": "Alice",
    "age": 30,
    "city": "New York"
}

## Function to add a key-value pair with type checking
def add_item(dictionary, key, value, expected_type):
    if isinstance(value, expected_type):
        dictionary[key] = value
        print(f"Added {key}: {value} to the dictionary.")
    else:
        print(f"Error: {key} must be of type {expected_type.__name__}.")

## Example usage
add_item(my_dict, "occupation", "Engineer", str)
add_item(my_dict, "salary", 75000, int)
add_item(my_dict, "is_active", True, bool)
add_item(my_dict, "height", "5.8", float) ## Intentionally incorrect type

print(my_dict)

In diesem Code definieren wir eine Funktion add_item, die ein Wörterbuch, einen Schlüssel, einen Wert und einen erwarteten Typ als Eingabe nimmt. Die Funktion verwendet die isinstance()-Funktion, um zu überprüfen, ob der Wert den erwarteten Typ hat. Wenn dies der Fall ist, wird das Schlüssel-Wert-Paar zum Wörterbuch hinzugefügt. Andernfalls wird eine Fehlermeldung ausgegeben.

Führen Sie das Skript erneut aus:

python ~/project/type_checking.py

Sie sollten die folgende Ausgabe sehen:

Added occupation: Engineer to the dictionary.
Added salary: 75000 to the dictionary.
Added is_active: True to the dictionary.
Error: height must be of type float.
{'name': 'Alice', 'age': 30, 'city': 'New York', 'occupation': 'Engineer', 'salary': 75000, 'is_active': True}

Wie Sie sehen können, hat die Funktion add_item die Schlüssel-Wert-Paare "occupation", "salary" und "is_active" erfolgreich zum Wörterbuch hinzugefügt, da ihre Werte den erwarteten Typen entsprachen. Für "height" wurde jedoch eine Fehlermeldung ausgegeben, da der bereitgestellte Wert ("5.8") ein String ist, während der erwartete Typ float war.

Dieses Beispiel demonstriert das grundlegende Konzept der Typüberprüfung in Wörterbüchern. In den folgenden Schritten werden wir fortgeschrittenere Techniken zur Gewährleistung der Typsicherheit in Ihrem Python-Code untersuchen.

Überprüfen der Typen von Schlüsseln und Werten

Im vorherigen Schritt haben wir gelernt, wie man den Typ von Werten überprüft, wenn man sie einem Wörterbuch hinzufügt. Jetzt wollen wir tiefer in die Materie einsteigen und untersuchen, wie man die Typen sowohl von Schlüsseln als auch von Werten in einem Wörterbuch überprüft.

Es ist wichtig sicherzustellen, dass die Schlüssel in einem Wörterbuch unveränderliche (immutable) Typen wie Strings, Zahlen oder Tupel sind. Die Werte hingegen können von jedem Typ sein. Lassen Sie uns die Datei type_checking.py so ändern, dass auch die Überprüfung des Schlüsseltyps enthalten ist.

Öffnen Sie die Datei type_checking.py in VS Code und ändern Sie sie wie folgt:

## Create a dictionary
my_dict = {
    "name": "Alice",
    "age": 30,
    "city": "New York"
}

## Function to add a key-value pair with type checking for both key and value
def add_item(dictionary, key, value, expected_key_type, expected_value_type):
    if not isinstance(key, expected_key_type):
        print(f"Error: Key must be of type {expected_key_type.__name__}.")
        return
    if not isinstance(value, expected_value_type):
        print(f"Error: Value must be of type {expected_value_type.__name__}.")
        return
    dictionary[key] = value
    print(f"Added {key}: {value} to the dictionary.")

## Example usage
add_item(my_dict, "occupation", "Engineer", str, str)
add_item(my_dict, "salary", 75000, str, int)
add_item(my_dict, 123, "Some Value", str, str) ## Intentionally incorrect key type

print(my_dict)

In diesem aktualisierten Code nimmt die Funktion add_item jetzt expected_key_type und expected_value_type als Argumente entgegen. Sie überprüft mithilfe von isinstance(), ob der bereitgestellte Schlüssel und der Wert die erwarteten Typen haben. Wenn entweder der Schlüssel oder der Wert einen falschen Typ hat, wird eine Fehlermeldung ausgegeben und die Funktion kehrt zurück, ohne das Element zum Wörterbuch hinzuzufügen.

Führen Sie jetzt das Skript aus:

python ~/project/type_checking.py

Sie sollten die folgende Ausgabe sehen:

Added occupation: Engineer to the dictionary.
Added salary: 75000 to the dictionary.
Error: Key must be of type str.
{'name': 'Alice', 'age': 30, 'city': 'New York', 'occupation': 'Engineer', 'salary': 75000}

Die Ausgabe zeigt, dass die Schlüssel-Wert-Paare "occupation" und "salary" erfolgreich zum Wörterbuch hinzugefügt wurden, weil sowohl ihre Schlüssel als auch ihre Werte den erwarteten Typen entsprachen. Wenn wir jedoch versuchten, ein Schlüssel-Wert-Paar mit einem ganzzahligen Schlüssel (123) hinzuzufügen, gab die Funktion eine Fehlermeldung aus, weil der erwartete Schlüsseltyp str war.

Das Überprüfen der Typen sowohl von Schlüsseln als auch von Werten trägt dazu bei, die Konsistenz und Korrektheit Ihrer Daten aufrechtzuerhalten. Es verhindert unerwartete Fehler und stellt sicher, dass Ihr Wörterbuch wie erwartet funktioniert.

Verwendung von all() mit isinstance()

In diesem Schritt werden wir untersuchen, wie man die all()-Funktion in Kombination mit isinstance() verwendet, um effizient die Typen aller Schlüssel und Werte in einem Wörterbuch zu überprüfen. Dieser Ansatz ist besonders nützlich, wenn Sie das gesamte Wörterbuch anhand einer Reihe von erwarteten Typen validieren müssen.

Die all()-Funktion in Python gibt True zurück, wenn alle Elemente in einem iterierbaren Objekt wahr sind. Wir können diese Funktion verwenden, um durch das Wörterbuch zu iterieren und zu prüfen, ob alle Schlüssel und Werte den erwarteten Typen entsprechen.

Lassen Sie uns die Datei type_checking.py so ändern, dass dieser Ansatz integriert wird.

Öffnen Sie die Datei type_checking.py in VS Code und ändern Sie sie wie folgt:

## Create a dictionary
my_dict = {
    "name": "Alice",
    "age": 30,
    "city": "New York"
}

## Function to check types of all keys and values in a dictionary
def check_dictionary_types(dictionary, expected_key_type, expected_value_type):
    key_types_correct = all(isinstance(key, expected_key_type) for key in dictionary)
    value_types_correct = all(isinstance(value, expected_value_type) for value in dictionary.values())

    if key_types_correct and value_types_correct:
        print("All keys and values have the correct types.")
        return True
    else:
        print("Not all keys and values have the correct types.")
        return False

## Example usage
check_dictionary_types(my_dict, str, (str, int)) ## Expecting keys to be strings and values to be either strings or integers

my_dict["zip"] = "10001"
check_dictionary_types(my_dict, str, (str, int))

my_dict["country"] = 123
check_dictionary_types(my_dict, str, (str, int))

In diesem Code nimmt die Funktion check_dictionary_types ein Wörterbuch, einen erwarteten Schlüsseltyp und einen erwarteten Wertetyp als Eingabe entgegen. Sie verwendet die all()-Funktion mit einem Generatorausdruck, um zu prüfen, ob alle Schlüssel den erwarteten Typ haben und ob alle Werte den erwarteten Typ haben. Wenn beide Bedingungen wahr sind, gibt sie eine Erfolgsmeldung aus und gibt True zurück. Andernfalls gibt sie eine Fehlermeldung aus und gibt False zurück.

Führen Sie das Skript aus:

python ~/project/type_checking.py

Sie sollten die folgende Ausgabe sehen:

All keys and values have the correct types.
All keys and values have the correct types.
Not all keys and values have the correct types.

Der erste Aufruf von check_dictionary_types gibt True zurück, weil alle Schlüssel Strings sind und alle Werte entweder Strings oder Ganzzahlen sind. Der zweite Aufruf gibt ebenfalls True zurück, nachdem der Schlüssel "zip" hinzugefügt wurde. Der dritte Aufruf gibt jedoch False zurück, nachdem der Schlüssel "country" mit einem ganzzahligen Wert hinzugefügt wurde, weil jetzt einer der Schlüssel eine Ganzzahl ist, was dem erwarteten Schlüsseltyp widerspricht.

Das Verwenden von all() mit isinstance() bietet eine kompakte und effiziente Möglichkeit, die Typen aller Elemente in einem Wörterbuch zu validieren, was die Datenintegrität gewährleistet und unerwartete Fehler in Ihrem Python-Code verhindert.

Zusammenfassung

In diesem Lab haben wir zunächst die Wichtigkeit der Typüberprüfung in Python-Wörterbüchern (dictionaries) verstanden. Wörterbücher sind vielseitige Datenstrukturen, die Schlüssel-Wert-Paare speichern. Wir haben ein Beispiel-Wörterbuch mit String-Schlüsseln und Werten gemischten Typs (String und Ganzzahl) erstellt und betont, wie wichtig es ist, die Integrität der Daten durch die Überprüfung der Typen von Schlüsseln und Werten sicherzustellen.

Im ersten Schritt wurde die Bedeutung der Typüberprüfung hervorgehoben, um sicherzustellen, dass die in einem Wörterbuch gespeicherten Daten den erwarteten Typen entsprechen. Beispielsweise sollte das Alter immer eine Ganzzahl und der Name immer ein String sein. Die Einrichtung des Labs umfasste das Erstellen einer Datei namens type_checking.py und das Ausführen dieser Datei, um den Inhalt des Wörterbuchs anzuzeigen.