<jupyter_start><jupyter_text>Dictionaries in PythonDictionaries sind unglaublich praktisch, damit kannst du z. B. folgendes machen:- Du kannst Wertezuordnungen speichern (z.B. Telefonbuch: Ein Nachname hat eine Telefonnummer).- Du kannst nachträglich Elemente verändern / entfernen / hinzufügen.- Dictionaries brauchst du wirklich immer wieder...Machen wir mal ein Beispiel...<jupyter_code>d = {"Berlin": "BER", "Helsinki": "HEL", "Saigon": "SGN"}
print(d)<jupyter_output>{'Berlin': 'BER', 'Helsinki': 'HEL', 'Saigon': 'SGN'}<jupyter_text>Zugriff auf ein einzelnes Element:<jupyter_code>print(d["Helsinki"])<jupyter_output>HEL<jupyter_text>Hiermit überschreibst du ein einzelnes Element:<jupyter_code>d["Budapest"] = "BUD"
print(d)<jupyter_output>{'Berlin': 'BER', 'Helsinki': 'HEL', 'Saigon': 'SGN', 'Budapest': 'BUD'}<jupyter_text>Element entfernen<jupyter_code>del d["Budapest"]
print(d)<jupyter_output>{'Berlin': 'BER', 'Helsinki': 'HEL', 'Saigon': 'SGN'}<jupyter_text>Abfrage: Ist ein Element im Dictionary?<jupyter_code>if "Budapest" in d:
    print("Budapest ist im Dictionary enthalten")
if "Saigon" in d:
    print("Saigon ist im Dicionary enthalten")<jupyter_output>Saigon ist im Dicionary enthalten<jupyter_text>Auf Elemente zugreifen...<jupyter_code>print(d["Saigon"])
print(d.get("Saigon"))<jupyter_output>SGN
SGN<jupyter_text>Warum sollte man get nutzen? Man kann doch auch einfach so drauf zugraifen? Die Lösung ist einfach aber sehr praktisch. Fehlertoleranz.<jupyter_code>print(d["Budapest"])
print(d.get("Budapest"))<jupyter_output>None<jupyter_text>Dictionaries und SchleifenDu hast bei Dictionaries 2 Möglichkeiten, diese mit einer for - Schleife durchzugehen.Entweder direkt, dann gehst du die Schlüssel durch:<jupyter_code>d = {"München": "MUC", "Budapest": "BUD", "Helsinki": "HEL"}

for key in d: 
    value = d[key]
    print(key)
    print(value)<jupyter_output>München
MUC
Budapest
BUD
Helsinki
HEL<jupyter_text>Oder über die .items() - Methode, damit kannst du Schlüssel + Wert direkt durchgehen:<jupyter_code>for key, value in d.items():
    print(key + ": " + value)<jupyter_output>München: MUC
Budapest: BUD
Helsinki: HEL<jupyter_text>Übung 1 Wie oft kommt jedes wort in der liste vor?<jupyter_code>liste = ["Hallo", "Hallo", "Welt", "Hallo", "Mars"]

d = {}
for element in liste:
    if element in d:
        d[element] = d[element] + 1
    else:
        d[element] = 1
    
print(d)<jupyter_output><empty_output><jupyter_text>Übung 2 Hardcore Wir trauen uns zum ersten mal an einen "echten" datensatz. http://p3.snf.ch/Pages/DataAndDocumentation.aspx<jupyter_code>import requests
import csv
data = requests.get("http://p3.snf.ch/P3Export/P3_PersonExport.csv").text.splitlines()
personen = csv.DictReader(data,delimiter=';')
next(personen)<jupyter_output><empty_output><jupyter_text>Welche Institute hatten die meisten beiteiligten personen?<jupyter_code>institutes = {}
for row in personen:
    if institutes.get(row["Institute Place"]) == None:
        institutes[row["Institute Place"]] = 1 
    else:
        institutes[row["Institute Place"]] += 1
institutes<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1344, 'fraction_numerical': 0.00352, 'mean_word_length': 6.425178147268409, 'pattern_counts': {'":': 7, '<': 40, '<?xml version=': 0, '>': 40, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '12', 'dir': 'jupyter-structured-clean-dedup', 'id': '268130', 'license': 'MIT', 'n_tokens_mistral': 1257, 'n_tokens_neox': 1203, 'n_words': 265, 'path': 'Python uebungen Tag3/05 Python Teil 3/02 Dicts.ipynb', 'repo_name': 'edzardschade/Edzard_CAS', 'size': '3125'}