• 1
    Eingabe und Ausgabe
    • Aufgaben
  • 2
    Bedingungen
    • Aufgaben
  • 3
    For-Schleife
    • Aufgaben
  • 4
    Zeichenketten
    • Aufgaben
  • 5
    While-Schleife
    • Aufgaben
  • 6
    Listen
    • Aufgaben
  • 7
    2D-Arrays
    • Aufgaben
  • 8
    Wörterbücher
    • Aufgaben
  • 9
    Mengen
    • Aufgaben
  • 10
    Funktionen und Rekursion
    • Aufgaben
  • к

Lektion 8. Dictionary

Schwierigkeit:

Aufgabe«Umkehrung des Wörterbuchs»

💻 Python
Studierende werden an Fakultäten registriert. Es ist notwendig, ein Programm zu schreiben, das Informationen über Studierende und ihre Fakultäten als Eingabe akzeptiert und dann ein Wörterbuch erstellt, in dem die Namen der Fakultäten die Schlüssel und die Werte die Namen der Studierenden sind, die an diesen Fakultäten studieren. Nach der Erstellung des Wörterbuchs soll das Programm Informationen über die nach Fakultäten gruppierten Studierenden im Format ausgeben: "Fakultät: Liste der Studierenden".

Eingabeformat

Zuerst wird die ganze Zahl N eingegeben – die Anzahl der Studenten. Danach wird in N Zeilen die Information über jeden Studenten im Format „Name Nachname Fakultät“ eingegeben.

Ausgabeformat

Das Programm soll Informationen über nach Fakultäten gruppierte Studenten ableiten. Für jede Fakultät wird eine Zeile ausgegeben, die den Namen der Fakultät und eine durch Kommas und Leerzeichen getrennte Liste von Studenten enthält.

Beispiel

Eingabe

3
Ivan Ivanov Fit
Peter Petrov Yuf
Maria Smirnova Fit

Ausgabe

Fit: Ivan Ivanov, Maria Smirnova
Yuf: Peter Petrov

Hinweis

Useful methods for working with dictionaries in Python

Dictionaries are one of the most powerful and flexible data structures in Python. To use them effectively, it is important to know the basic methods. Let's take a closer look at them.

The keys() method

Returns all dictionary keys as a special representation object dict_keys.

my_dict = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
keys = my_dict.keys()
print(keys)  # Output: dict_keys(['key1', 'key2', 'key3'])

A useful tip: The dict_keys object is iterable, meaning you can use it in a for loop. However, this is not a list. If you need a list of keys (for example, for index access), simply convert it using the list() function.

key_list = list(my_dict.keys())
print(key_list[0]) # Output: key1

The values() method

Returns all dictionary values as a representation object dict_values.

values = my_dict.values()
print(values) # Output: dict_values(['value1', 'value2', 'value3'])

A useful tip: Like dict_keys, dict_values can be iterated, but it is not a list. The conversion to list() also works if you need a list of values. This is convenient, for example, to check for the presence of a value.

The items() method

Returns all key-value pairs as a dict_items object, where each pair is represented as a tuple.

items = my_dict.items()
print(items) # Output: dict_items([('key1', 'value1'), ('key2', 'value2'), ('key3', 'value3')])

A useful tip: This method is incredibly convenient for iterating through a dictionary when you need both a key and a value at the same time. This is considered the most "Pythonic" way to bypass the dictionary.

for key, value in my_dict.items():
    print(f"Key: {key}, Value: {value}")

get() method

Returns the value by key. If there is no key, it returns the default value (or None if it is not specified).

value = my_dict.get("key1")
print(value) # Output: value1

value_nonexistent = my_dict.get("key4", "there is no such key")
print(value_nonexistent) # Output: there is no such key

A useful tip: Use get() instead of direct access through square brackets (my_dict["key4"]) when you are not sure if the key exists in the dictionary. This will avoid the KeyError error and the crash of the program. This is much safer when working with data that comes from external sources.

The popitem() method

Deletes and returns the last added key-value pair as a tuple.

last_item = my_dict.popitem()
print(last_item) # Output: ('key3', 'value3')
print(my_dict) # Output: {'key1': 'value1', 'key2': 'value2'}

A useful tip: This method works according to the LIFO (Last-In, First-Out) principle. It is useful when you need to process dictionary elements in the reverse order of their addition. (Guaranteed LIFO order is supported in Python 3.7+).

The update() method

Updates the dictionary by adding key-value pairs from another dictionary or from an iterable object with pairs.

# The original my_dict dictionary is already without 'key3'
my_dict.update({"key4": "value4", "key1": "new value1"})
print(my_dict)
# Output: {'key1': 'new value1', 'key2': 'value2', 'key4': 'value4'}

A useful tip: Note that if the key from the updating dictionary already exists in the original one, its value will be overwritten. update() is an effective way to merge two dictionaries.

Nested dictionaries

Dictionaries can contain other dictionaries as values. This allows you to create complex hierarchical data structures very similar to the JSON format.

nested_dict = {
    "key1": {"plugg1": "value1"},
"key2": {"plugg2": "value2"}
}

# Accessing the nested value
print(nested_dict["key1"]["plugg1"]) # Output: value1

An example of a multidimensional structure in dictionaries

students = {
    "Alice": {"age": 25, "grades": [88, 92, 85]},
    "Bob": {"age": 22, "grades": [79, 85, 80]},
    "Charlie": {"age": 23, "grades": [90, 87, 85]}
}

# Getting Alice's age
print(students["Alice"]["age"]) # Output: 25

# Getting the first grade Bob
print(students["Bob"]["grades"][0]) # Output: 79

# Adding a new student
students["David"] = {"age": 24, "grades": [82, 79, 88]}
print(students)

A useful tip: When working with nested dictionaries, the risk of getting a KeyError increases. For secure access to the embedded data, you can use a chain of calls get().

# Safely obtaining the age of a student, which may not be
age = students.get("Eve", {}).get("age", "Unknown")
print(age) # Output: Unknown

Here students.get("Eve", {}) will return an empty dictionary {}, since there is no student "Eve", and already this empty dictionary will be called .get("age", ...), which will prevent the error.

main.py
Test 1
Test 2
Test 3
Test 4
Test 5
Test 6
Test 7
Test 8
Test 9
Test 10
Entwicklerlösung

🎉 Glückwunsch! 🎉

Du hast die Aufgabe hervorragend gelöst! Es war schwierig, aber du hast die Lösung gefunden. Du bist dem Meister einen Schritt näher! Mach weiter so.

AD

Werbung

red-snake blue-snake green-snake

Führe deinen Code aus...

KI-Assistent

Hallo! Ich bin dein Programmier-Assistent. Stelle mir beliebige Fragen zu Python — ich erkläre Funktionen, Methoden und helfe dir bei der aktuellen Aufgabe!