Dictionaries in Python verwalten

PythonPythonBeginner
Jetzt üben

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

Einleitung

In diesem Lab erhalten Sie praktische Erfahrung im Umgang mit Dictionaries in Python. Dictionaries sind wesentliche Datenstrukturen zum Speichern von Daten in Schlüssel-Wert-Paaren. Sie lernen, wie Sie Dictionaries erstellen und inspizieren, ihre grundlegenden Eigenschaften verstehen und wie sie sich von Sequenztypen unterscheiden.

Durch praktische Schritte erkunden Sie den Zugriff auf und die Modifikation bestehender Dictionary-Elemente sowie das Hinzufügen neuer Schlüssel-Wert-Paare und das Löschen von Elementen. Abschließend tauchen Sie in Dictionary-View-Objekte ein, die dynamische Ansichten der Schlüssel, Werte und Elemente eines Dictionaries bieten.

Dictionaries erstellen und inspizieren

In diesem Schritt lernen Sie, wie Sie Dictionaries in Python erstellen und inspizieren. Dictionaries sind eine grundlegende Datenstruktur, die Daten in Schlüssel-Wert-Paaren speichert. Im Gegensatz zu Sequenzen wie Strings, Listen und Tupeln, die durch einen Zahlenbereich indiziert werden, werden Dictionaries durch Schlüssel indiziert, die jeder unveränderliche Typ sein kann; Strings und Zahlen können immer Schlüssel sein. Tupel können als Schlüssel verwendet werden, wenn sie nur Strings, Zahlen oder Tupel enthalten; wenn ein Tupel direkt oder indirekt ein veränderliches Objekt enthält, kann es nicht als Schlüssel verwendet werden. Listen können nicht als Schlüssel verwendet werden, da Listen durch Indexzuweisungen, Slice-Zuweisungen oder Methoden wie append() und extend() direkt modifiziert werden können.

Ein Dictionary ist eine ungeordnete Sammlung von Schlüssel-Wert-Paaren. Jeder Schlüssel muss innerhalb eines Dictionaries eindeutig sein. Seit Python 3.7 ist die Reihenfolge von Dictionaries garantiert die Einfügungsreihenfolge.

Beginnen wir mit der Erstellung einiger Dictionaries. Sie können ein leeres Dictionary mit geschweiften Klammern {} oder dem dict()-Konstruktor erstellen.

Öffnen Sie die Datei main.py im VS Code-Editor.

code main.py

Fügen Sie den folgenden Code zu main.py hinzu, um ein leeres Dictionary zu erstellen und auszugeben:

## Create an empty dictionary
empty_dict = {}
print(empty_dict)
print(type(empty_dict))

empty_dict_constructor = dict()
print(empty_dict_constructor)
print(type(empty_dict_constructor))

Speichern Sie die Datei, indem Sie Strg + S drücken.

Führen Sie nun das Skript im Terminal aus:

python main.py

Sie sollten die folgende Ausgabe sehen:

{}
<class 'dict'>
{}
<class 'dict'>

Als Nächstes erstellen wir ein Dictionary mit einigen Schlüssel-Wert-Paaren mithilfe von geschweiften Klammern. Fügen Sie den folgenden Code zu main.py hinzu:

## Create a dictionary with key-value pairs
student_info = {'name': 'Alice', 'age': 25, 'major': 'Computer Science'}
print(student_info)
print(type(student_info))

Speichern Sie die Datei und führen Sie das Skript erneut aus:

python main.py

Die Ausgabe enthält nun das student_info-Dictionary:

{}
<class 'dict'>
{}
<class 'dict'>
{'name': 'Alice', 'age': 25, 'major': 'Computer Science'}
<class 'dict'>

Sie können Dictionaries auch mit dem dict()-Konstruktor mit Schlüsselwortargumenten oder einer Liste von Schlüssel-Wert-Tupeln erstellen. Fügen Sie den folgenden Code zu main.py hinzu:

## Create dictionaries using dict() constructor
student_info_kw = dict(name='Bob', age=22, major='Physics')
print(student_info_kw)

student_info_tuples = dict([('name', 'Charlie'), ('age', 28), ('major', 'Chemistry')])
print(student_info_tuples)

Speichern Sie die Datei und führen Sie das Skript aus:

python main.py

Die Ausgabe zeigt die mit dem dict()-Konstruktor erstellten Dictionaries:

{}
<class 'dict'>
{}
<class 'dict'>
{'name': 'Alice', 'age': 25, 'major': 'Computer Science'}
<class 'dict'>
{'name': 'Bob', 'age': 22, 'major': 'Physics'}
{'name': 'Charlie', 'age': 28, 'major': 'Chemistry'}

Schließlich inspizieren wir den Inhalt eines Dictionaries. Sie können das gesamte Dictionary ausgeben, um alle Schlüssel-Wert-Paare anzuzeigen.

## Inspect the dictionary
print(student_info)

Speichern und führen Sie das Skript ein letztes Mal aus. Die Ausgabe enthält das student_info-Dictionary.

In diesem Schritt haben Sie gelernt, wie Sie Dictionaries mit verschiedenen Methoden erstellen und wie Sie deren Inhalt durch Ausgabe inspizieren.

Dictionary-Elemente zugreifen und modifizieren

In diesem Schritt lernen Sie, wie Sie auf Elemente innerhalb eines Dictionaries zugreifen und diese modifizieren. Sie können auf den Wert zugreifen, der einem bestimmten Schlüssel zugeordnet ist, indem Sie eckige Klammern [] verwenden.

Arbeiten Sie weiterhin mit der Datei main.py im VS Code-Editor.

code main.py

Fügen Sie den folgenden Code zu main.py hinzu, um auf Elemente aus dem im vorherigen Schritt erstellten student_info-Dictionary zuzugreifen:

## Access dictionary elements
student_info = {'name': 'Alice', 'age': 25, 'major': 'Computer Science'}
print("Student Name:", student_info['name'])
print("Student Age:", student_info['age'])

Speichern Sie die Datei und führen Sie das Skript aus:

python main.py

Sie sollten die folgende Ausgabe sehen, die die zugegriffenen Werte anzeigt:

Student Name: Alice
Student Age: 25

Wenn Sie versuchen, mit eckigen Klammern auf einen nicht vorhandenen Schlüssel zuzugreifen, wird ein KeyError ausgelöst. Um dies zu vermeiden, können Sie die Methode get() verwenden, die None zurückgibt, wenn der Schlüssel nicht gefunden wird, oder einen von Ihnen angegebenen Standardwert.

Fügen Sie den folgenden Code zu main.py hinzu, um den Zugriff auf einen nicht vorhandenen Schlüssel mit get() zu demonstrieren:

## Accessing non-existent key using get()
print("Student City (using get()):", student_info.get('city'))
print("Student City (using get() with default):", student_info.get('city', 'Not Specified'))

Speichern Sie die Datei und führen Sie das Skript aus:

python main.py

Die Ausgabe zeigt die Ergebnisse der Verwendung von get():

Student Name: Alice
Student Age: 25
Student City (using get()): None
Student City (using get() with default): Not Specified

Nun lernen wir, wie man Dictionary-Elemente modifiziert. Sie können den Wert, der einem vorhandenen Schlüssel zugeordnet ist, ändern, indem Sie ihm einen neuen Wert mit eckigen Klammern zuweisen.

Fügen Sie den folgenden Code zu main.py hinzu, um das Alter des Studenten zu ändern:

## Modify dictionary elements
print("Original age:", student_info['age'])
student_info['age'] = 26
print("Modified age:", student_info['age'])
print("Updated dictionary:", student_info)

Speichern Sie die Datei und führen Sie das Skript aus:

python main.py

Die Ausgabe zeigt die Änderung des Alters und das aktualisierte Dictionary:

Student Name: Alice
Student Age: 25
Student City (using get()): None
Student City (using get() with default): Not Specified
Original age: 25
Modified age: 26
Updated dictionary: {'name': 'Alice', 'age': 26, 'major': 'Computer Science'}

In diesem Schritt haben Sie gelernt, wie Sie auf Dictionary-Elemente mit eckigen Klammern und der get()-Methode zugreifen und wie Sie die Werten, die vorhandenen Schlüsseln zugeordnet sind, modifizieren.

Dictionary-Elemente hinzufügen und löschen

In diesem Schritt lernen Sie, wie Sie neue Elemente zu einem Dictionary hinzufügen und vorhandene Elemente löschen.

Arbeiten Sie weiterhin mit der Datei main.py im VS Code-Editor.

code main.py

Um ein neues Element zu einem Dictionary hinzuzufügen, weisen Sie einfach einem neuen Schlüssel mithilfe von eckigen Klammern einen Wert zu. Wenn der Schlüssel bereits existiert, modifiziert diese Operation den vorhandenen Wert, wie Sie im vorherigen Schritt gesehen haben.

Fügen Sie den folgenden Code zu main.py hinzu, um ein neues Schlüssel-Wert-Paar (city: New York) zum student_info-Dictionary hinzuzufügen:

## Add a new element
student_info = {'name': 'Alice', 'age': 26, 'major': 'Computer Science'}
print("Dictionary before adding:", student_info)
student_info['city'] = 'New York'
print("Dictionary after adding:", student_info)

Speichern Sie die Datei und führen Sie das Skript aus:

python main.py

Sie sollten das neue Schlüssel-Wert-Paar city zum Dictionary hinzugefügt sehen:

Dictionary before adding: {'name': 'Alice', 'age': 26, 'major': 'Computer Science'}
Dictionary after adding: {'name': 'Alice', 'age': 26, 'major': 'Computer Science', 'city': 'New York'}

Nun erkunden wir verschiedene Möglichkeiten, Elemente aus einem Dictionary zu löschen.

Sie können die Methode pop(key) verwenden, um das Element mit dem angegebenen Schlüssel zu entfernen und dessen Wert zurückzugeben. Wenn der Schlüssel nicht gefunden wird, löst dies einen KeyError aus. Sie können auch einen Standardwert als zweites Argument an pop() übergeben, um den KeyError zu vermeiden, wenn der Schlüssel nicht gefunden wird.

Fügen Sie den folgenden Code zu main.py hinzu, um die Verwendung von pop() zu demonstrieren:

## Delete elements using pop()
print("Dictionary before pop:", student_info)
removed_major = student_info.pop('major')
print("Removed major:", removed_major)
print("Dictionary after pop:", student_info)

## Trying to pop a non-existent key with a default value
removed_country = student_info.pop('country', 'Country not found')
print("Removed country (with default):", removed_country)
print("Dictionary after pop (non-existent):", student_info)

## Trying to pop a non-existent key without a default value (will cause an error if uncommented)
## student_info.pop('country')

Speichern Sie die Datei und führen Sie das Skript aus:

python main.py

Die Ausgabe zeigt die Auswirkung der Verwendung von pop():

Dictionary before adding: {'name': 'Alice', 'age': 26, 'major': 'Computer Science'}
Dictionary after adding: {'name': 'Alice', 'age': 26, 'major': 'Computer Science', 'city': 'New York'}
Dictionary before pop: {'name': 'Alice', 'age': 26, 'major': 'Computer Science', 'city': 'New York'}
Removed major: Computer Science
Dictionary after pop: {'name': 'Alice', 'age': 26, 'city': 'New York'}
Removed country (with default): Country not found
Dictionary after pop (non-existent): {'name': 'Alice', 'age': 26, 'city': 'New York'}

Eine weitere Methode ist popitem(), die ein (key, value)-Paar aus dem Dictionary entfernt und zurückgibt. In Python 3.7+ entfernt popitem() das zuletzt eingefügte Element.

Fügen Sie den folgenden Code zu main.py hinzu, um die Verwendung von popitem() zu demonstrieren:

## Delete elements using popitem()
print("Dictionary before popitem:", student_info)
removed_item = student_info.popitem()
print("Removed item:", removed_item)
print("Dictionary after popitem:", student_info)

Speichern Sie die Datei und führen Sie das Skript aus:

python main.py

Die Ausgabe zeigt das von popitem() entfernte Element:

Dictionary before adding: {'name': 'Alice', 'age': 26, 'major': 'Computer Science'}
Dictionary after adding: {'name': 'Alice', 'age': 26, 'major': 'Computer Science', 'city': 'New York'}
Dictionary before pop: {'name': 'Alice', 'age': 26, 'major': 'Computer Science', 'city': 'New York'}
Removed major: Computer Science
Dictionary after pop: {'name': 'Alice', 'age': 26, 'city': 'New York'}
Removed country (with default): Country not found
Dictionary after pop (non-existent): {'name': 'Alice', 'age': 26, 'city': 'New York'}
Dictionary before popitem: {'name': 'Alice', 'age': 26, 'city': 'New York'}
Removed item: ('city', 'New York')
Dictionary after popitem: {'name': 'Alice', 'age': 26}

Sie können auch die del-Anweisung verwenden, um ein Element mit einem bestimmten Schlüssel zu entfernen. Ähnlich wie beim Zugriff mit eckigen Klammern löst die Verwendung von del bei einem nicht vorhandenen Schlüssel einen KeyError aus.

Fügen Sie den folgenden Code zu main.py hinzu, um die Verwendung von del zu demonstrieren:

## Delete elements using del
print("Dictionary before del:", student_info)
del student_info['age']
print("Dictionary after del:", student_info)

## Trying to delete a non-existent key using del (will cause an error if uncommented)
## del student_info['city']

Speichern Sie die Datei und führen Sie das Skript aus:

python main.py

Die Ausgabe zeigt die Auswirkung der Verwendung von del:

Dictionary before adding: {'name': 'Alice', 'age': 26, 'major': 'Computer Science'}
Dictionary after adding: {'name': 'Alice', 'age': 26, 'major': 'Computer Science', 'city': 'New York'}
Dictionary before pop: {'name': 'Alice', 'age': 26, 'major': 'Computer Science', 'city': 'New York'}
Removed major: Computer Science
Dictionary after pop: {'name': 'Alice', 'age': 26, 'city': 'New York'}
Removed country (with default): Country not found
Dictionary after pop (non-existent): {'name': 'Alice', 'age': 26, 'city': 'New York'}
Dictionary before popitem: {'name': 'Alice', 'age': 26, 'city': 'New York'}
Removed item: ('city', 'New York')
Dictionary after popitem: {'name': 'Alice', 'age': 26}
Dictionary before del: {'name': 'Alice', 'age': 26}
Dictionary after del: {'name': 'Alice'}

Schließlich können Sie die Methode clear() verwenden, um alle Elemente aus einem Dictionary zu entfernen.

Fügen Sie den folgenden Code zu main.py hinzu, um die Verwendung von clear() zu demonstrieren:

## Clear the dictionary
print("Dictionary before clear:", student_info)
student_info.clear()
print("Dictionary after clear:", student_info)

Speichern Sie die Datei und führen Sie das Skript aus:

python main.py

Die Ausgabe zeigt, wie das Dictionary geleert wird:

Dictionary before adding: {'name': 'Alice', 'age': 26, 'major': 'Computer Science'}
Dictionary after adding: {'name': 'Alice', 'age': 26, 'major': 'Computer Science', 'city': 'New York'}
Dictionary before pop: {'name': 'Alice', 'age': 26, 'major': 'Computer Science', 'city': 'New York'}
Removed major: Computer Science
Dictionary after pop: {'name': 'Alice', 'age': 26, 'city': 'New York'}
Removed country (with default): Country not found
Dictionary after pop (non-existent): {'name': 'Alice', 'age': 26, 'city': 'New York'}
Dictionary before popitem: {'name': 'Alice', 'age': 26, 'city': 'New York'}
Removed item: ('city', 'New York')
Dictionary after popitem: {'name': 'Alice', 'age': 26}
Dictionary before del: {'name': 'Alice', 'age': 26}
Dictionary after del: {'name': 'Alice'}
Dictionary before clear: {'name': 'Alice'}
Dictionary after clear: {}

In diesem Schritt haben Sie gelernt, wie Sie neue Elemente zu einem Dictionary hinzufügen und wie Sie Elemente mit pop(), popitem(), del und clear() löschen.

Dictionary-View-Objekte erkunden

In diesem Schritt erkunden Sie Dictionary-View-Objekte, dynamische Ansichten der Schlüssel, Werte oder Elemente (Schlüssel-Wert-Paare) eines Dictionaries. Diese Ansichten aktualisieren sich automatisch, wenn sich das Dictionary ändert.

Arbeiten Sie weiterhin mit der Datei main.py im VS Code-Editor.

code main.py

Dictionaries bieten drei Methoden, um View-Objekte zu erhalten:

  • keys(): Gibt ein View-Objekt zurück, das eine Liste aller Schlüssel im Dictionary anzeigt.
  • values(): Gibt ein View-Objekt zurück, das eine Liste aller Werte im Dictionary anzeigt.
  • items(): Gibt ein View-Objekt zurück, das eine Liste von Schlüssel-Wert-Tupel-Paaren eines Dictionaries anzeigt.

Fügen Sie den folgenden Code zu main.py hinzu, um die View-Objekte des student_info-Dictionaries abzurufen und auszugeben:

## Explore dictionary view objects
student_info = {'name': 'Alice', 'age': 26, 'major': 'Computer Science', 'city': 'New York'}

keys_view = student_info.keys()
values_view = student_info.values()
items_view = student_info.items()

print("Keys View:", keys_view)
print("Values View:", values_view)
print("Items View:", items_view)

Speichern Sie die Datei und führen Sie das Skript aus:

python main.py

Sie sollten die ausgegebenen View-Objekte sehen:

Keys View: dict_keys(['name', 'age', 'major', 'city'])
Values View: dict_values(['Alice', 26, 'Computer Science', 'New York'])
Items View: dict_items([('name', 'Alice'), ('age', 26), ('major', 'Computer Science'), ('city', 'New York')])

Dictionary-View-Objekte sind iterierbar, was bedeutet, dass Sie sie durchlaufen können. Sie unterstützen auch die Mitgliedschaftsprüfung (Operator in).

Fügen Sie den folgenden Code zu main.py hinzu, um das Iterieren und die Mitgliedschaftsprüfung in View-Objekten zu demonstrieren:

## Iterate through keys view
print("\nIterating through keys:")
for key in keys_view:
    print(key)

## Check membership in keys view
print("\nIs 'name' in keys view?", 'name' in keys_view)
print("Is 'country' in keys view?", 'country' in keys_view)

Speichern Sie die Datei und führen Sie das Skript aus:

python main.py

Die Ausgabe zeigt die Ergebnisse der Iteration und der Mitgliedschaftsprüfung:

Keys View: dict_keys(['name', 'age', 'major', 'city'])
Values View: dict_values(['Alice', 26, 'Computer Science', 'New York'])
Items View: dict_items([('name', 'Alice'), ('age', 26), ('major', 'Computer Science'), ('city', 'New York')])

Iterating through keys:
name
age
major
city

Is 'name' in keys view? True
Is 'country' in keys view? False

Da View-Objekte dynamisch sind, werden alle Änderungen am Dictionary in den Ansichten widergespiegelt.

Fügen Sie den folgenden Code zu main.py hinzu, um die dynamische Natur von View-Objekten zu demonstrieren:

## Demonstrate dynamic nature of view objects
print("\nKeys view before adding:", keys_view)
student_info['zip_code'] = '10001'
print("Dictionary after adding:", student_info)
print("Keys view after adding:", keys_view)

Speichern Sie die Datei und führen Sie das Skript aus:

python main.py

Sie werden sehen, dass der Schlüssel zip_code automatisch in die keys_view aufgenommen wird, nachdem er zum Dictionary hinzugefügt wurde:

Keys View: dict_keys(['name', 'age', 'major', 'city'])
Values View: dict_values(['Alice', 26, 'Computer Science', 'New York'])
Items View: dict_items([('name', 'Alice'), ('age', 26), ('major', 'Computer Science'), ('city', 'New York')])

Iterating through keys:
name
age
major
city

Is 'name' in keys view? True
Is 'country' in keys view? False

Keys view before adding: dict_keys(['name', 'age', 'major', 'city'])
Dictionary after adding: {'name': 'Alice', 'age': 26, 'major': 'Computer Science', 'city': 'New York', 'zip_code': '10001'}
Keys view after adding: dict_keys(['name', 'age', 'major', 'city', 'zip_code'])

Sie können View-Objekte in Listen, Sets oder Tupel konvertieren, wenn Sie eine statische Kopie benötigen oder Operationen wie Indizierung oder Slicing durchführen möchten (die von View-Objekten nicht direkt unterstützt werden).

Fügen Sie den folgenden Code zu main.py hinzu, um View-Objekte in andere Typen zu konvertieren:

## Convert view objects to other types
keys_list = list(keys_view)
values_tuple = tuple(values_view)
items_set = set(items_view)

print("\nKeys as List:", keys_list)
print("Values as Tuple:", values_tuple)
print("Items as Set:", items_set)

Speichern Sie die Datei und führen Sie das Skript aus:

python main.py

Die Ausgabe zeigt die View-Objekte, die in verschiedene Datentypen konvertiert wurden:

Keys View: dict_keys(['name', 'age', 'major', 'city'])
Values View: dict_values(['Alice', 26, 'Computer Science', 'New York'])
Items View: dict_items([('name', 'Alice'), ('age', 26), ('major', 'Computer Science'), ('city', 'New York')])

Iterating through keys:
name
age
major
city

Is 'name' in keys view? True
Is 'country' in keys view? False

Keys view before adding: dict_keys(['name', 'age', 'major', 'city'])
Dictionary after adding: {'name': 'Alice', 'age': 26, 'major': 'Computer Science', 'city': 'New York', 'zip_code': '10001'}
Keys view after adding: dict_keys(['name', 'age', 'major', 'city', 'zip_code'])

Keys as List: ['name', 'age', 'major', 'city', 'zip_code']
Values as Tuple: ('Alice', 26, 'Computer Science', 'New York', '10001')
Items as Set: {('major', 'Computer Science'), ('zip_code', '10001'), ('name', 'Alice'), ('city', 'New York'), ('age', 26)}

In diesem Schritt haben Sie Dictionary-View-Objekte (keys(), values(), items()) kennengelernt, wie man sie durchläuft, auf Mitgliedschaft prüft und wie sie Änderungen im Dictionary dynamisch widerspiegeln. Sie haben auch gesehen, wie man View-Objekte in andere Datentypen konvertiert.

Zusammenfassung

In diesem Lab haben Sie die Grundlagen der Verwaltung von Dictionaries in Python gelernt. Sie haben damit begonnen zu verstehen, dass Dictionaries ungeordnete Sammlungen eindeutiger Schlüssel-Wert-Paare sind, die durch unveränderliche Schlüssel indiziert werden. Sie haben das Erstellen von Dictionaries sowohl mit geschweiften Klammern {} als auch mit dem dict()-Konstruktor geübt, einschließlich der Erstellung leerer Dictionaries und Dictionaries mit anfänglichen Schlüssel-Wert-Paaren. Sie haben auch gelernt, wie Sie den Typ eines Dictionaries mit der Funktion type() überprüfen können.