Objektattribute aus Liste mit Objekten auslesen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
ninaebez
User
Beiträge: 7
Registriert: Montag 16. November 2020, 10:07

Hallo zusammen,

die Frage ist wahrscheinlich total trivial, ich stehe aber auf dem Schlauch und komme nur auf umständliche Lösungen, die nicht wirklich "pythonic" sind:

Ich habe eine Liste aus Objekten, bspw. Mitarbeiterobjekten. Die Objekte haben ihrerseits Attribute, bspw. mitarbeiter.name und mitarbeiter.id.

Ich möchte nun diese Liste aus Mitarbeiterobjekten nach einer eineindeutigen id durchsuchen und den Namen des Mitarbeiters mit der entsprechenden Personalnummer erhalten.

Ich dachte an:

Code: Alles auswählen

index = [mitarbeiter.id for mitarbeiter in objektliste].index(id)
objektliste[index].name
Geht das auch schöner ohne den Umweg über den index der Liste?

Danke und viele Grüße!

ninaebez
einfachTobi
User
Beiträge: 491
Registriert: Mittwoch 13. November 2019, 08:38

Wenn sie eindeutig ist, sollte das funktionieren:

Code: Alles auswählen

next(mitarbeiter.name for mitarbeiter in objektliste if mitarbeiter.id == 4711)
Benutzeravatar
peterpy
User
Beiträge: 188
Registriert: Donnerstag 7. März 2013, 11:35

Hallo ninaebez,
über ein Dictionary gehts viel einfacher.
Statt dass Du die Daten in eine Liste einliest, schreib sie in ein Dictionary.

Code: Alles auswählen

mitarbeiter = {id : (name, vorname, und, was, sonst, noch, dazu, gehoert)}
Dann kannst Du über das Dict zugreifen.

Code: Alles auswählen

der_mitarbeiter = mitarbeiter[id]
Gruss Peter
ninaebez
User
Beiträge: 7
Registriert: Montag 16. November 2020, 10:07

einfachTobi hat geschrieben: Donnerstag 22. Juli 2021, 14:38 Wenn sie eindeutig ist, sollte das funktionieren:

Code: Alles auswählen

next(mitarbeiter.name for mitarbeiter in objektliste if mitarbeiter.id == 4711)
Das ist doch sehr sexy ist doch das. Danke!
Antworten