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 [2022-06-22 12:32] – [Aufgabe 2: CSV in ein Dictionary einlesen] hofgf_informatik:daten:processing:dictionaries [2024-06-10 12:30] (aktuell) hof
Zeile 6: Zeile 6:
  
 Wie wir wissen, können wir in einem (sortierten) Wörterbuch (Diktionär) effizient suchen: Wie wir wissen, können wir in einem (sortierten) Wörterbuch (Diktionär) effizient suchen:
-  * Der Suchbereich wird fortlaufend halbiert (s.a. Binäre Suche in [[gf_informatik:suchen_und_sortieren]])+  * Der Suchbereich wird fortlaufend halbiert (s.a. Binäre Suche in [[gf_informatik:suchen_und_sortieren_2023]])
   * Bei $n$ Einträgen benötigt die Suche nach einem Element nur $log_2(n)$ Zugriffe, also   * Bei $n$ Einträgen benötigt die Suche nach einem Element nur $log_2(n)$ Zugriffe, also
     * $10$ Zugriffe für $1024$ Elemente,     * $10$ Zugriffe für $1024$ Elemente,
     * $20$ Zugriffe für $1024\cdot1024 \approx 1Mio$,     * $20$ Zugriffe für $1024\cdot1024 \approx 1Mio$,
     * $30$ Zugriffe für $1024\cdot1024\cdot1024 \approx 1Mia$     * $30$ Zugriffe für $1024\cdot1024\cdot1024 \approx 1Mia$
 +
  
 ### Syntax ### Syntax
Zeile 32: Zeile 33:
 plz = zip_codes['Romanshorn'] plz = zip_codes['Romanshorn']
 print(plz) print(plz)
- 
->>> 8590 
 </code> </code>
 +
 +  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:
Zeile 41: Zeile 42:
 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)
- 
->>> {'Romanshorn': 8591, 'Egnach': 9322, 'Amriswil': 8580} 
 </code> </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> <code python>
 print('Romanshorn' in zip_codes) print('Romanshorn' in zip_codes)
->>> True+</code>
  
 +  True
 +
 +<code python>
 print('St. Gallen' in zip_codes) print('St. Gallen' in zip_codes)
->>> False 
 </code> </code>
 +
 +  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:
Zeile 58: Zeile 63:
 for town in zip_codes: for town in zip_codes:
     print(town)     print(town)
-     
->>> Romanshorn 
->>> Egnach 
->>> Amriswil 
 </code> </code>
 +
 +  Romanshorn
 +  Egnach
 +  Amriswil
  
 Möchten wir in der Schleife sowohl Key als auch Value haben, verwenden wir die `items()` Funktion: Möchten wir in der Schleife sowohl Key als auch Value haben, verwenden wir die `items()` Funktion:
Zeile 68: Zeile 73:
 for town, plz in zip_codes.items(): for town, plz in zip_codes.items():
     print(plz, town)     print(plz, town)
-     
->>> 8591 Romanshorn 
->>> 9322 Egnach 
->>> 8580 Amriswil 
 </code> </code>
 +
 +  8591 Romanshorn
 +  9322 Egnach
 +  8580 Amriswil
  
 ### Aufgabe 1: Dictionary Syntax ### Aufgabe 1: Dictionary Syntax
Zeile 83: Zeile 88:
 Wir benötigen dafür zwei separate Dictionaries. Wir benötigen dafür zwei separate Dictionaries.
 ++++ ++++
- 
 ### Aufgabe 2: CSV in ein Dictionary einlesen ### Aufgabe 2: CSV in ein Dictionary einlesen
  
-Lies die Datei [[https://kantonsschuleromanshorn.sharepoint.com/:x:/r/sites/FSInformatik/Freigegebene%20Dokumente/OFI2/Daten/Processing/Beispieldaten/plz.csv?d=wcf8191d3d9d24c6da0e355bbbbb91459&csf=1&web=1&e=7KvfAk&download=1|plz.csv]] ein und erstelle daraus ein Dictionary von Ortsnamen zu Postleitzahl.+Lies die Datei [[https://kantonsschuleromanshorn.sharepoint.com/:f:/s/FSInformatik/Ek-Hi_stH2RMjDa-wQN9jekBMeF_YD6rvhmibDlNglGWxw?e=Y3AX65|plz.csv]] ein und erstelle daraus ein Dictionary von Ortsnamen zu Postleitzahl.
  
 Die Daten sehen so aus: Die Daten sehen so aus:
Zeile 98: Zeile 102:
 </code> </code>
  
-Hinweis:+Hinweise:
   * Die PLZ steht zuerst, also an `values[0]`   * Die PLZ steht zuerst, also an `values[0]`
   * Der Ort ist an zweiter Stelle, also `values[1]`   * Der Ort ist an zweiter Stelle, also `values[1]`
-  * Wir wollen ein umgekehrtes Dictionary von Ortsnamen zu PLZ.  +  * Wir wollen ein **umgekehrtes** Dictionary von Ortsnamen zu PLZ.  
-  * Ein Ortsnamen kann mehrere Postleitzahlen haben - wir möchten immer die erste 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>
 ++++Code| ++++Code|
 <code python> <code python>
Zeile 121: Zeile 126:
 </code> </code>
 ++++ ++++
 +</nodisp>
 +
  
 ### Aufgabe 3: Zwei Datasets kombinieren ### Aufgabe 3: Zwei Datasets kombinieren
Zeile 141: Zeile 148:
 ++++ ++++
 </nodisp> </nodisp>
 +
 +### Mehr zu Dictionaries
 +
 +Du willst mehr über Dictionaries wissen und selber eines programmieren? [[dictionaries_tutorial|Schau hier]]!
  
 ### Nächstes Kapitel ### Nächstes Kapitel
  
 Weiter mit [[gf_informatik:daten:processing:maps]]. Weiter mit [[gf_informatik:daten:processing:maps]].
  • gf_informatik/daten/processing/dictionaries.1655901141.txt.gz
  • Zuletzt geändert: 2022-06-22 12:32
  • von hof