@akkdaa38,
also wenn die Ausgabe so aussehen soll:
Die Ausgabe soll in etwa so aussehen: {"Anton": 19, "Quentin": 24, "Lena":22}
handelt es sich nicht um ein Set, sondern ein Dictionary. Also Schlüssel:Wert - Paare.
Ein Set besteht ja nur aus einzelnen Elementen. Zum Beispiel sähe das so aus: {"Anton", "Quentin", "Lena"}
Um die Ausgabe, die du vorgestellt hast zu erzeugen, könnte man so vorgehen:
Code: Alles auswählen
class Student:
def __init__(self, name, alter):
self.name = name
self.alter = alter
# zunächst die Studenten-Objekte mit Name und Alter anlegen und in einer Liste speichern.
students = [
Student(name="Anton", alter=19),
Student(name="Quentin", alter=24),
Student(name="Lena", alter=22),
]
# Dictionary-Comprehension zum Erzeugen eines Dictionaries.
# Dabei sind die Elemente links und rechts vom Doppelpunkt jeweils
# Schlüssel und Wert des Dictionaries und werden über
# den Zugriff auf die Attribute 'name' und 'alter'
# schrittweise aus der 'students' Liste geholt und als kompletter Dictionary in 'ergebnis' gespeichert
ergebnis = {student.name: student.alter for student in students}
print(ergebnis)
"""
Ausgabe:
{'Anton': 19, 'Quentin': 24, 'Lena': 22}
"""
Falls die Ausgabe aber vielleicht so aussehen sollte (Achtung! Position der Anführungsstriche beachten):
{'Anton: 19', 'Quentin: 24', 'Lena: 22'}
Wäre es wirklich ein Set, wenn auch etwas verwirrend.
Und das ginge dann so:
Code: Alles auswählen
class Student:
def __init__(self, name, alter):
self.name = name
self.alter = alter
def __str__(self):
return f"{self.name}: {self.alter}"
# Objekte erzeugen und gleich in einem Set anlegen.
# Durch die f'{}' Umschließung der Objekte werden sie mit der __str__ Methode in die
# gewünschten Zeichenketten umgewandelt
ergebnis = {
f'{Student(name="Anton", alter=19)}',
f'{Student(name="Quentin", alter=24)}',
f'{Student(name="Lena", alter=22)}'
}
print(ergebnis)
"""
Ausgabe:
{'Anton: 19', 'Quentin: 24', 'Lena: 22'}
"""