Ich soll folgendes Dictionary umdrehen:
Code: Alles auswählen
alter = {
'lisa': 19,
'michael': 22,
'sebastian': 18,
'zheng': 23,
'theo': 26,
'alex': 19,
'nick': 19
}
Ich hab auch eine "Lösung"... Ihr werdet vermutlich die Hände überm Kopf zusammenschlagen:
Code: Alles auswählen
def dreheDic(d):
x = d.items()
values = list(d.values())
names = []
for i in d:
l = []
for j, k in x:
if k == d[i] and k not in names:
l.append(j)
names.append(l)
bereinigt = []
for i in names:
if i not in bereinigt:
bereinigt.append(i)
x = zip(bereinigt, values)
alter = []
namen = []
for i, j in x:
namen.append(i)
alter.append(j)
return(list(zip(namen,alter)))
print(dreheDic(alter))
Sich erst die Schlüssel zu besorgen, die auf den gleichen Value zeigen. Diese habe ich dann in "names" als Liste gespeichert.
Da meine 1. For-Schleife jedoch nicht sehr effizienz arbeitet muss danach die Liste "names" von doppelten Einträgen "bereinigt" werden.
Das ergebnis speichere ich dann in "bereinigt". Anschließend zippe ich das ganze zusammen und... Ach... Das ist einfach ein riesen Kuddelmuddel bei dem ich schon selber nicht mehr durchschaue..
Meine Ausgabe schaut nun jedenfalls so aus:
Code: Alles auswählen
[(['lisa', 'alex', 'nick'], 19), (['michael'], 22), (['sebastian'], 18), (['zheng'], 23), (['theo'], 26)]
... Und, wenn ich mir das ganze so anschaue eigentlich auch gar nicht mehr möchte.. Die Lösung ist einfach grausam anzusehen.. Das seh selbst ich als Anfänger...
Wie würdet ihr das ganze angehen?