Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
gf_informatik:daten:processing:dictionaries [2025-05-15 06:55] hofgf_informatik:daten:processing:dictionaries [2026-04-27 06:02] (aktuell) hof
Zeile 19: Zeile 19:
     * Erlaubt direkten Zugriff auf jedes Element mit dem gewünschten *Schlüssel*.     * Erlaubt direkten Zugriff auf jedes Element mit dem gewünschten *Schlüssel*.
     * Jeder Schlüssel kann nur einmal vorkommen, Werte hingegen können mehrfach enthalten sein.     * Jeder Schlüssel kann nur einmal vorkommen, Werte hingegen können mehrfach enthalten sein.
-    * In Wahrheit benützt sie nicht binäre Suche, sondern eine noch schnellere Zugriffsart: [[wpde>Hashtabelle]].+    * In Wirklichkeit benützen Dictionaries nicht binäre Suche, sondern eine noch schnellere Zugriffsart: [[wpde>Hashtabelle]].
  
 Ein leeres Dictionary wird mit geschweiften Klammern erzeugt: Ein leeres Dictionary wird mit geschweiften Klammern erzeugt:
Zeile 26: Zeile 26:
 </code> </code>
 Alternativ können auch bereits Einträge von der Form `key : value` eingetragen werden: Alternativ können auch bereits Einträge von der Form `key : value` eingetragen werden:
-<code python>+<bottom-editor autorun id="dict1">
 zip_codes = { 'Romanshorn' : 8590, 'Egnach' : 9322 } zip_codes = { 'Romanshorn' : 8590, 'Egnach' : 9322 }
-</code>+</bottom-editor>
  
 Auf ein bestimmtes Element kann über *eckige* Klammern und den Schlüssel (*key*) zugegriffen werden. Die Syntax ist die gleiche wie beim Listenzugriff, nur verwenden wir statt dem *Index* den *Schlüssel*. Auf ein bestimmtes Element kann über *eckige* Klammern und den Schlüssel (*key*) zugegriffen werden. Die Syntax ist die gleiche wie beim Listenzugriff, nur verwenden wir statt dem *Index* den *Schlüssel*.
-<code python>+<bottom-editor autorun id="dict2">
 plz = zip_codes['Romanshorn'] plz = zip_codes['Romanshorn']
 print(plz) print(plz)
-</code> +</bottom-editor>
- +
-  8590+
  
 Ein neues Element kann mit derselben Syntax angelegt werden - ist der Schlüssel bereits vorhanden, wird der Wert überschrieben: Ein neues Element kann mit derselben Syntax angelegt werden - ist der Schlüssel bereits vorhanden, wird der Wert überschrieben:
-<code python>+<bottom-editor autorun id="dict3">
 zip_codes['Amriswil'] = 8580    # Legt ein neues Key-Value-Pair an. zip_codes['Amriswil'] = 8580    # Legt ein neues Key-Value-Pair an.
 zip_codes['Romanshorn'] = 8591  # Überschreibt den bestehenden Eintrag für Romanshorn zip_codes['Romanshorn'] = 8591  # Überschreibt den bestehenden Eintrag für Romanshorn
-print(zip_codes) +print(zip_codes)</bottom-editor>
-</code> +
- +
-  {'Romanshorn': 8591, 'Egnach': 9322, 'Amriswil': 8580}+
  
 Mit dem `in` Schlüsselwort kann herausgefunden werden, ob ein Schlüssel im Dictionary vorhanden ist: Mit dem `in` Schlüsselwort kann herausgefunden werden, ob ein Schlüssel im Dictionary vorhanden ist:
-<code python>+<bottom-editor autorun id="dict4">
 print('Romanshorn' in zip_codes) print('Romanshorn' in zip_codes)
-</code> 
- 
-  True 
- 
-<code python> 
 print('St. Gallen' in zip_codes) print('St. Gallen' in zip_codes)
-</code> +</bottom-editor>
- +
-  False+
  
 Wir können eine `for`-Schleife über die Keys in einem Dictionary schreiben: Wir können eine `for`-Schleife über die Keys in einem Dictionary schreiben:
-<code python>+<bottom-editor autorun id="dict5">
 for town in zip_codes: for town in zip_codes:
     print(town)     print(town)
-</code>+</bottom-editor>
  
-  Romanshorn +Möchten wir in der Schleife sowohl Key als auch Value haben, verwenden wir die `items()` Funktion. Jedes _item_ ist ein _Tuple_ mit zwei Werten, dem _key_ und dem _value_. 
-  Egnach +<bottom-editor autorun id="dict6">
-  Amriswil +
- +
-Möchten wir in der Schleife sowohl Key als auch Value haben, verwenden wir die `items()` Funktion: +
-<code python>+
 for town, plz in zip_codes.items(): for town, plz in zip_codes.items():
     print(plz, town)     print(plz, town)
-</code> +</bottom-editor>
- +
-  8591 Romanshorn +
-  9322 Egnach +
-  8580 Amriswil+
  
 ### Aufgabe 1: Dictionary Syntax ### Aufgabe 1: Dictionary Syntax
Zeile 84: Zeile 64:
 Schreibe Code wie die obigen Beispiele, um eine Sammlung von Postleitzahlen anzulegen. Schreibe Code wie die obigen Beispiele, um eine Sammlung von Postleitzahlen anzulegen.
  
-Wie müsste man vorgehen, wenn wir sowohl ein Mapping von Ortsnamen zu Postleitzahlen als auch umgekehrt von Postleitzahlen zu Ortsnamen haben möchten?+Wie müsste man vorgehen, wenn wir sowohl ein Dictionary von Ortsnamen zu Postleitzahlen als auch umgekehrt von Postleitzahlen zu Ortsnamen haben möchten?
  
 ++++Antwort:| ++++Antwort:|
Zeile 109: Zeile 89:
   * Ein Ortsnamen kann mehrere Postleitzahlen haben - wir möchten immer die kleinste behalten (also `1000` für Lausanne, nicht `1005`).   * Ein Ortsnamen kann mehrere Postleitzahlen haben - wir möchten immer die kleinste behalten (also `1000` für Lausanne, nicht `1005`).
  
-<nodisp 2+<bottom-exercise hidesolution id="load-plz" zip="https://bottom.ch/ksr/2m/data/2m.zip"
-++++Code| +<script type="text/x-starter"> 
-<code python>+def load_zip_codes(): 
 +    """Liest plz.csv und erstellt ein Dictionary 
 +       mit key Gemeindename und value Postleitzahl.""" 
 +        
 +        
 +</script> 
 +<script type="text/x-test"> 
 +assert str(load_zip_codes()['Romanshorn']) == '8590' 
 +assert str(load_zip_codes()['Pollegio']) == '6742' 
 +assert str(load_zip_codes()['Lausanne']) == '1000' 
 +</script> 
 +<script type="text/x-solution">
 def load_zip_codes(): def load_zip_codes():
     zip_codes = {}     zip_codes = {}
Zeile 125: Zeile 116:
                 pass                 pass
     return zip_codes     return zip_codes
-</code> +</script
-++++ +</bottom-exercise> 
-</nodisp>+
  
  
Zeile 139: Zeile 130:
 ++++ ++++
  
-<nodisp 2>+<nodisp 1>
 ++++Lösung:| ++++Lösung:|
 <code python> <code python>
  • gf_informatik/daten/processing/dictionaries.1747292112.txt.gz
  • Zuletzt geändert: 2025-05-15 06:55
  • von hof