So greifen Sie in Python sicher auf verschachtelte Wörterbuchwerte zu

Barbara Streisand
Freigeben: 2024-10-18 13:06:30
Original
309 Leute haben es durchsucht

How to Safely Access Nested Dictionary Values in Python

Sicherer Zugriff auf verschachtelte Wörterbuchwerte

In Python kann das Abrufen von Werten aus verschachtelten Wörterbüchern manchmal zu Ausnahmen führen, wenn ein Schlüssel nicht vorhanden ist. In diesem Artikel werden verschiedene Methoden zum sicheren Zugriff auf diese Werte untersucht.

Try-Catch-Ausnahmebehandlung verwenden

Der traditionelle Ansatz besteht darin, den Zugriffsvorgang in einen Try-Except-Block zu packen. Wenn ein fehlender Schlüssel festgestellt wird, wird die Ausnahme behandelt und der Code wird weiterhin ausgeführt:

<code class="python">try:
    example_dict['key1']['key2']
except KeyError:
    pass</code>
Nach dem Login kopieren

Diese Methode erfordert jedoch eine Wiederholung der Schlüsselprüfung für jede Verschachtelungsebene, was umständlich werden kann.

Verkettung von get()-Aufrufen

Python stellt die get()-Methode für Wörterbücher bereit, die den mit einem Schlüssel verknüpften Wert oder „Keine“ zurückgibt, wenn der Schlüssel nicht vorhanden ist. Diese Methode kann mehrfach verkettet werden, um sicher auf verschachtelte Werte zuzugreifen:

<code class="python">example_dict.get('key1', {}).get('key2')</code>
Nach dem Login kopieren

Dieser Ansatz gibt None zurück, wenn einer der Zwischenschlüssel fehlt, kann aber dennoch einen AttributeError auslösen, wenn der mit einem Schlüssel verknüpfte Wert vorhanden ist kein Wörterbuch oder ein dict-ähnliches Objekt mit einer get()-Methode.

Verwendung des Hasher-Rezepts

Um sowohl KeyErrors als auch AttributeErrors zu vermeiden, kann man den Hasher implementieren Rezept, das eine benutzerdefinierte Klasse erstellt, die von dict erbt und die Methode __missing__() überschreibt:

<code class="python">class Hasher(dict):
    def __missing__(self, key):
        value = self[key] = type(self)()
        return value</code>
Nach dem Login kopieren

Mit dieser Klasse geben fehlende Schlüssel immer einen leeren Hasher zurück, was eine sichere Navigation durch die verschachtelte Struktur ermöglicht:

<code class="python">example_dict = Hasher()
print(example_dict['key1']['key2'])  # {}</code>
Nach dem Login kopieren

Safeget-Hilfsfunktion

Schließlich kann man eine Hilfsfunktion erstellen, die die Komplexität des sicheren Wertabrufs verbirgt:

<code class="python">def safeget(dct, *keys):
    for key in keys:
        try:
            dct = dct[key]
        except KeyError:
            return None
    return dct</code>
Nach dem Login kopieren

Diese Funktion vereinfacht die Zugriffssyntax und reduziert die Code-Unordnung:

<code class="python">safeget(example_dict, 'key1', 'key2')</code>
Nach dem Login kopieren

Zusammenfassend lässt sich sagen, dass Python zwar keine integrierte Methode für den sicheren Zugriff auf verschachtelte Wörterbuchwerte bietet, die vorgestellten Techniken jedoch verschiedene Optionen zum Umgang mit fehlenden Werten bieten Schlüssel und verhindern den Aufwand für die Ausnahmebehandlung.

Das obige ist der detaillierte Inhalt vonSo greifen Sie in Python sicher auf verschachtelte Wörterbuchwerte zu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage