Funktionen mit variabler Parameteranzahl
Verfasst: Mittwoch 8. März 2023, 17:33
Hallo.
Heute mal ein Problem aus dem Hause Funktionen mit variabler Parameteranzahl:
Ich habe Listen mit dicts mit zumindest einem identem keys. Dieses möchte ich aus jeder Liste auslesen und in separate Variablen packen.
Die Funktion soll so gestrickt sein, dass sie unterschiedliche Anzahl an Parametern übergebenbekommen kann und dann (und das ist meine Schwierigkeit) auch dementsprechend viele Rückgabewerte haben soll.
Hier habe ich das mal versucht herzuleiten:
In diesem Beispiel werden alle Namen in eine Liste gepackt, das will ich nicht - weis aber auch nicht wie ich es ändern kann.
Also 'name' soll aus jeder Liste ausgelesen werden und dann auch dementsprechend oft zurückgegeben werden. Also in namen_a sollen als liste alle name aus liste_a landen, alle name aus liste_b soll in names_b landen usw..
Ja. man könnte das auch mit Listcomprihention o.Ä. einfach für jede Liste machen, aber natürlich passiert innerhalb des "richtigen" Projekts innerhalb der Funktion noch deutlich mehr als dass nur ein Eintrag ausgelesen wird und dieser zurück gegeben werden soll. Mir geht es in erster Linie "nur" um die Syntax.
Ich hoffe, dass man mein Problem nachvollziehen kann und ihr mir helfen könnt.
VG
Feedback
Heute mal ein Problem aus dem Hause Funktionen mit variabler Parameteranzahl:
Ich habe Listen mit dicts mit zumindest einem identem keys. Dieses möchte ich aus jeder Liste auslesen und in separate Variablen packen.
Die Funktion soll so gestrickt sein, dass sie unterschiedliche Anzahl an Parametern übergebenbekommen kann und dann (und das ist meine Schwierigkeit) auch dementsprechend viele Rückgabewerte haben soll.
Hier habe ich das mal versucht herzuleiten:
Code: Alles auswählen
liste_a = [
{'name': 'Sophie', 'alter': 42, 'schuhgroesse': 42},
{'name': 'Moritz', 'alter': 8, 'schuhgroesse': 15},
{'name': 'Michaela', 'alter': 23, 'schuhgroesse': 500},
]
liste_b = [
{'name': 'Anna', 'hausnummer': '42'},
{'name': 'Julia', 'hausnummer': '42a'},
]
liste_c = [
{'name': 'Fabian'},
{'name': 'Hauke'},
{'name': 'Hans'},
{'name': 'Kristin'},
{'name': 'Paul'},
{'name': 'Brit'},
]
def bspfunktion(*listen):
namen = []
for liste in listen:
for i in range(len(liste)):
namen.append(liste[i]['name'])
# print(namen)
def main():
# namen_a, namen_b, namen_c = bspfunktion(liste_a, liste_b, liste_c)
bspfunktion(liste_a, liste_b, liste_c)
print('\nTest-Lauf')
if __name__ == '__main__':
main()
Also 'name' soll aus jeder Liste ausgelesen werden und dann auch dementsprechend oft zurückgegeben werden. Also in namen_a sollen als liste alle name aus liste_a landen, alle name aus liste_b soll in names_b landen usw..
Ja. man könnte das auch mit Listcomprihention o.Ä. einfach für jede Liste machen, aber natürlich passiert innerhalb des "richtigen" Projekts innerhalb der Funktion noch deutlich mehr als dass nur ein Eintrag ausgelesen wird und dieser zurück gegeben werden soll. Mir geht es in erster Linie "nur" um die Syntax.
Ich hoffe, dass man mein Problem nachvollziehen kann und ihr mir helfen könnt.
VG
Feedback