Seite 1 von 1

Durchlauf verschachtelte For-Schleife

Verfasst: Montag 16. November 2020, 17:01
von LisaF
Hey Leute,

kann mir jemand den genauen Durchlauf des folgenden Codes erklären?

Code: Alles auswählen

personen = ["jan", "peter", "horst"]
präferenz = {"jan": ["AI", "ITS", "Mathe"],
            "peter": ["ITS", "ET", "Physik"],
            "horst": ["Physik", "Mathe", "Chemie"]}
noten =     {"jan": ["1", "1", "2"],
            "peter": ["3", "2", "2"],
            "horst": ["3", "2", "1"]}

personen_dict = {pers: [(fach, note) for fach, note in
                        zip(präferenz[pers], noten[pers])]
                        for pers in personen}

for person, daten in personen_dict.items():
    print("Student: ", person)
    for fach in daten:
        print("Fach: ", fach[0], "Note: ", fach[1])
Wo fängt der Computer hier genau an und welche Befehle folgen dann? Bzw. was wird hier zuerst in welche for Schleife geschrieben? Denn die Angabe, die auf jeden Fall benötigt wird pers in Personen befindet sich ja erst am Ende der Schleife. Mir geht es hauptsächlich um den mittleren Abschnitt, sprich:

Code: Alles auswählen

personen_dict = {pers: [(fach, note) for fach, note in
                        zip(präferenz[pers], noten[pers])]
                        for pers in personen}
Vielen Dank für jede Hilfe

Re: Durchlauf verschachtelte For-Schleife

Verfasst: Montag 16. November 2020, 17:36
von Sirius3
Was Du da hast ist eine verschachtelte Dict-Comprehension mit einer List-Comprehension: https://docs.python.org/3/tutorial/data ... rehensions
Wobei die innere Schleife überflüssig ist:

Code: Alles auswählen

personen_mit_präferenzen_und_noten = {
    person: list(zip(präferenz[person], noten[person]))
    for person in personen
}