Seite 1 von 1

Verarbeitung von Daten aus einem Dictionary

Verfasst: Donnerstag 17. Dezember 2020, 11:29
von claussal
Hallo zusammen,
ich habe eine Herausforderung für die Verarbeitung einer Liste und zeitgleich einem Dictionary.
Meine Liste und Dictionary sehen folgendermaßen aus:
mylist = ['MD1_Position_Vlan', 'MD1_Position_Komfort', 'MD1_Position_Sens', 'MD1_Lage_Vlan', 'MD1_Lage_Sens']
mydict = {'MD1_Position': 'Empfänger', 'MD1_Lage': 'Sender'}

Wie kann ich auch aus der mylist und mydict eine neue Liste (bspw. newlist) erzeugen die folgendermaßen aussehen würde:
newlist = ['Empfänger', 'Empfänger', 'Empfänger', 'Sender', 'Sender']
also die newlist weißt jedem 'MD1_Position_...' aus der mylist den aus mydict zugewiesenen Wert zu und gleiches für 'MD1_Lage'.

Wie kann ich dies automatisiert umsetzen?

Besten Dank für Eure Hilfe

Re: Verarbeitung von Daten aus einem Dictionary

Verfasst: Donnerstag 17. Dezember 2020, 11:59
von Jankie
z.B. mit rsplit()

Code: Alles auswählen

mylist = ['MD1_Position_Vlan', 'MD1_Position_Komfort', 'MD1_Position_Sens', 'MD1_Lage_Vlan', 'MD1_Lage_Sens']
mydict = {'MD1_Position': 'Empfänger', 'MD1_Lage': 'Sender'}

new_list = [mydict[x.rsplit('_', 1)[0]] for x in mylist]
print(new_list)

Re: Verarbeitung von Daten aus einem Dictionary

Verfasst: Donnerstag 17. Dezember 2020, 13:41
von claussal
Jankie hat geschrieben: Donnerstag 17. Dezember 2020, 11:59 z.B. mit rsplit()

Code: Alles auswählen

mylist = ['MD1_Position_Vlan', 'MD1_Position_Komfort', 'MD1_Position_Sens', 'MD1_Lage_Vlan', 'MD1_Lage_Sens']
mydict = {'MD1_Position': 'Empfänger', 'MD1_Lage': 'Sender'}

new_list = [mydict[x.rsplit('_', 1)[0]] for x in mylist]
print(new_list)
Perfekt, vielen Dank!

Re: Verarbeitung von Daten aus einem Dictionary

Verfasst: Donnerstag 17. Dezember 2020, 16:38
von Sirius3
`mylist` und `mydict` sind schlechte Namen. Das my trägt nicht zur Verständlichkeit bei und list und dict sind zu generisch; Variablennamen sollten etwas über den Inhalt aussagen.
`x` für ein Element von diesem mylist ist damit auch schlecht.