<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["element"] = "attribut"
print(d)
teilnehmer = {"Peter" : "m", "Rosa" : "f", "Alexander" : "m", "Anna" : "f" , "Lukas" : "m"}
print(d)
#Hinzufügen eines neuen Elements (Key + Attribut bzw. value)
d["Karl"] = "m"
print(d)
#das Attribut eines key ändern, indem wir den key aufrufen und das Attribut ändern
d["Peter"] = "f"
print(d)
for d<jupyter_output><empty_output><jupyter_text>Element entfernen<jupyter_code>del d["Budapest"]
del d["Peter"]
print(d)<jupyter_output>{'Rosa': 'f', 'Alexander': 'm', 'Anna': 'f', 'Lukas': 'm', 'Karl': 'm'}<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")
if "Rosa" in d:
    print("Rosa ist im Dictionary enthalten")<jupyter_output>Rosa ist im Dictionary enthalten<jupyter_text>Auf Elemente zugreifen...<jupyter_code>print(d["Saigon"])
print(d.get("Saigon")) 
#weshalb die Methode .get nutzen? Wenn er hier etwas nicht findet, kommt die Antwor: None
#wenn er im oberen Fall nichts findet, gibt es error.<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"} #key : value

for key in d: 
    value = d[key]
    print(key)
    print(value)
for key in teilnehmer:
    value = teilnehmer[key]
    print(key)
    print(value)<jupyter_output>Peter
m
Rosa
f
Alexander
m
Anna
f
Lukas
m<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)
for key, value in teilnehmer.items(): #was macht die methode .items? ==> macht Pärchen
    print(key + ": " + value)<jupyter_output>Peter: m
Rosa: f
Alexander: m
Anna: f
Lukas: m<jupyter_text>Übung 1 Wie oft kommt jedes wort in der liste vor?<jupyter_code>liste = ["Hallo", "Hallo", "Welt", "Hallo", "Mars"]

namenslexikon = {}

for element in liste: #element = iterator, den kann ich frei benennen.
    if element not in namenslexikon:
        print(element)
        namenslexikon[element]=0 #= hier das element in den lexikon gelegt zusammen value
        print(namenslexikon[element])
    if element in namenslexikon:
        namenslexikon[element]=namenslexikon[element] + 1
    
#d = {}
#for element in liste:
# dein code hier 

print(namenslexikon)<jupyter_output>Hallo
0
Welt
0
Mars
0
{'Hallo': 3, 'Welt': 1, 'Mars': 1}<jupyter_text>Übung 2 Hardcore Für diejenigen die eine Herausforderung suchen, gibts hier auch 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=';')<jupyter_output><empty_output><jupyter_text>So sieht ein Datensatz aus:<jupyter_code>next(personen)<jupyter_output><empty_output><jupyter_text>Welche Institute hatten die meisten beiteiligten Personen?<jupyter_code># institutes = {}
# for row in personen:
# dein code hier<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.128131021194605, 'fraction_numerical': 0.0036127167630057803, 'mean_word_length': 5.887230514096186, 'pattern_counts': {'":': 8, '<': 44, '<?xml version=': 0, '>': 45, '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': '13', 'dir': 'jupyter-structured-clean-dedup', 'id': '100151', 'license': 'MIT', 'n_tokens_mistral': 1645, 'n_tokens_neox': 1603, 'n_words': 408, 'path': '05 Python Teil 3/02 Dicts.ipynb', 'repo_name': 'edzardschade/Edzard_CAS', 'size': '4152'}