# Übungen zu Dictionaries


## Ausgangslage

Sie haben zwei Tabellen mit Personallisten jeweils mit Namen und Monatsgehältern
als ein Python-Dictionary. Die Keys sind die Namen der Angestellten (strings),
die Werte das jeweilige Monatsgehalt (integer):

```py
salaries_1 = {'Anna': 2000, 'Mark': 3000, 'Judith': 3500, 'Thomas': 2500}
salaries_2 = {'Barbara': 3000, 'Elke': 3300, 'Michael': 2800, 'Johann': 2000}
```


## Aufgabe 1:

Schreiben Sie ein Programm, das die beiden Dictionaries in einem neuen
Dictionary (`salaries_all`) zusammenführt und die Namen aller Mitarbeiter
als Liste ausgibt.

Tipp: Machen Sie zunächst eine Kopie des ersten Dictionaries ([dict.copy]`()`)
und fügen Sie dann die Einträge des zweiten Dictionaries der Kopie hinzu
([dict.update]`()`).

[dict.copy]: https://docs.python.org/3/library/stdtypes.html#dict.copy
[dict.update]: https://docs.python.org/3/library/stdtypes.html#dict.update


## Aufgabe 2:

Schreiben Sie ein Programm, das den Namen und das Gehalt des Mitarbeiters mit
dem höchsten Gehalt aus den gesamten Daten ermittelt und diese ausgibt (mit
`print`).


## Aufgabe 3:

Schreiben Sie ein Programm, das die Gesamtsumme aller monatlichen Gehälter
ermittelt und diese ausgibt.


## Aufgabe 4:

Schreiben Sie ein Programm, das das Gehalt aller Mitarbeiter um 10% erhöht und
diese Daten in einem *neuen* Dictionary (z.B. `salaries_new`) mit der selben
Struktur speichert. Das ursprüngliche Dictionary soll *nicht* verändert werden.


## Aufgabe 5:

Lassen Sie das Program dieses neue Dictionary in folgendem Format ausgeben:

```
Name    Gehalt
--------------
Anna    ???
Mark    ???
...
```

Tipp: verwenden Sie die String-Methode [ljust]`()` für die Ausgabe der ersten 
Spalte, um die zweite Spalte auszurichten.

[ljust]: https://docs.python.org/3/library/stdtypes.html#str.ljust


## Aufgabe 6:


Lassen Sie das Programm die alten Gehälter in der gleichen Form ausgeben,
um zu zeigen, dass das ursprüngliche Dictionary nicht verändert wurde.


## Bonusaufgaben:

1. Sortieren Sie die Liste nach Höhe des Gehalts (absteigend).

   Tipp: verwenden Sie die Funktion [sorted]`()` zum Sortieren.

2. Nummerieren Sie die Listeneinträge in der Ausgabe, startend mit 1.

3. Ermitteln Sie das durchschnittliche Gehalt nach der Erhöhung.

4. Berechnen Sie, wieviel Prozent des durchschnitlichen Gehalts jeder Mitarbeiter
   verdient und geben diese Prozentzahl in einer zusätzlichen Spalte aus.

   Tipp: Sie können die Prozentzahlen in einem neuen, zusätzlichen Dictionary
   speichern oder, anstatt nur dem Gehalt, für jeden Mitarbeiter das Gehalt und
   die Prozent des Durchschnittsverdienstes als Tuple mit zwei Elementen als
   Wert im Dictionary ablegen.


[sorted]: https://docs.python.org/3/library/functions.html#sorted


## Ressourcen

Hilfe zu Dictionaries:

* <https://docs.python.org/3/library/stdtypes.html#mapping-types-dict>
* <https://www.data-science-architect.de/dictionaries-python/>
