Python-Aufgabe ist unverständlich - kann jemand helfen?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

So..?

def spiegeln(d):
    res = {}
    for key in d:
        res[d[key]] = key
    return res
    
d = {1:'a',2:'b',3:'c',4:'d'}
print(spiegeln(d))
#Oder als lambda Funktion mit dict comprehension
spiegeln = lambda d: {d[key]:key for key in d} 
#Lambda Funktionen bieten sich ja bei simplen Sachen gut an ;)
Woher ich das weiß:Studium / Ausbildung – Informatikstudent
Leahcim0321 
Fragesteller
 10.12.2021, 17:46

Hm guter Lösungsansatz finde ich aber vieles haben wir noch nicht gelernt von dem. Bis jetzt kann ich nur Schleifen, Basics, If Else Statements, Listen, definieren, randoms und dictionaris. Würde das auch etwas leichter mit diesen genannten skills gehen?

MfG

0
whgoffline  10.12.2021, 17:48
@Leahcim0321

Bei der Norameln Funktion hast du doch praktisch nur eine Schleife..? Die Lambda Funktion dient nur als Verkürzung.

1
Leahcim0321 
Fragesteller
 10.12.2021, 17:50
@whgoffline

Asoooooo tut mir leid ich Sitz schon länger dran mein Gehirn ist bereits leicht Matsch XD. Danke das hat mir sehr geholfen!

1
whgoffline  10.12.2021, 17:51
@Leahcim0321

Ps.: Wenn du dir mal die syntax von Lambda Funktionen und dictionary comprehensions anschaust, wirst du merken, dass das praktisch identisch zur ersten Funktion läuft ;)

1
GuteAntwort2021  10.12.2021, 17:57
@Leahcim0321

Genauso hat es whgoffline doch vorgegeben.

def spiegeln(d):
  res = {}
  for key in d:
    res[d[key]] = key
  return res

dict = {
 "Flugzeug": "airplane",
 "Auto": "car",
 "Haus": "house"
}

print("Dictionary vor dem Spiegeln:")
print(dict)

dict = spiegeln(dict)

print("Dictionary nach dem Spiegeln:")
print(dict)

Die Funktion nimmt das übergebene Dictionary, erstellt ein leeres temporäres Dictionary, speichert den Key als Value und den Value als Key in das temporäre Dictionary und gibt dieses dann zurück.

Die Schlüssel und Werte werden also einfach vertauscht zurückgegeben.

Genauso war die Aufgabenstellung vorgegeben.

2
Leahcim0321 
Fragesteller
 10.12.2021, 18:01
@GuteAntwort2021

Ja wie gesagt war vorerst nur leicht verwirrt. Aber danke für die Erklärung!

1

Du kannst über die Paare (a, b) in den dict.items() iterieren und damit ein Dicitionary mit den vertauschten Zuordnungen b: a aufbauen...

def spiegeln(dictionary):
    return({b: a for a, b in dictionary.items()})


test_dict = {'hello': 'Hallo', 'world': 'Welt', 'example': 'Beispiel'}
print("Original:", test_dict)
print("Gespiegelt:", spiegeln(test_dict))

Bzw. kannst du auch kürzer schreiben...

spiegeln = lambda d: {a: b for a, b in d.items()}
Leahcim0321 
Fragesteller
 10.12.2021, 18:10

Ok das ist auch sehr hilfreich. Danke!

0