Изучаю Python и застрял на kwargs
Доброго времени суток.
Изучаю Python и застрял:
def tracklist(*artist,**tracks):
for name in artist:
print(name)
for key, value in tracks.items():
print(f"'ALBUM':{key}, 'TRACK':{value}")
tracklist(Woodkid={"The Golden Age": "Run Boy Run",
"On the Other Side": "Samara"},
Cure={"Disintegration": "Lovesong",
"Wish": "Friday I'm in love"})
Функция должна распечатать значения из словаря в следующем виде:
Woodkid
ALBUM: The Golden Age TRACK: Run Boy Run
ALBUM: On the Other Side TRACK: Samara
Cure
ALBUM: Disintegration TRACK: Lovesong
ALBUM: Wish TRACK: Friday I'm in love
Где-то закралась ошибка, не могу найти
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
**tracks (kwargs) это словарь из именованных параметров функции, у вас это будет Woodkid и Cure, а в *artist попадут позиционные параметры, у вас их нет, т.к. только именованные передаете, поэтому в artist (args) будет пусто
С учетом выше написанного код поменял на:
def tracklist(**tracks):
for name, tracks in tracks.items():
print(name)
for album, track in tracks.items():
print(f"ALBUM: {album}, TRACK: {track}")
tracklist(
Woodkid={"The Golden Age": "Run Boy Run", "On the Other Side": "Samara"},
Cure={"Disintegration": "Lovesong", "Wish": "Friday I'm in love"}
)
Результат:
Woodkid
ALBUM: The Golden Age, TRACK: Run Boy Run
ALBUM: On the Other Side, TRACK: Samara
Cure
ALBUM: Disintegration, TRACK: Lovesong
ALBUM: Wish, TRACK: Friday I'm in love