Я пытаюсь написать функцию python, которая принимает диктат с названиями фильмов в качестве ключей и список исполнителей в этом фильме в качестве значений, а также возвращает новый диктат с исполнителями в качестве ключей и фильмами, в которых они отображаются в качестве значений.Этот код подходит близко, но возвращает что-то свое для каждого запуска.
Вот исходный вызов функции:
movies = {"How to Be Single": ["Alison Brie", "Dakota Johnson",
"Rebel Wilson"],
"The Lego Movie": ["Will Arnett", "Elizabeth Banks",
"Alison Brie", "Will Ferrell"]}
print(stars,movies)
Вот код:
def stars(movies):
# create a new dictionary
films_dict= {}
performances_films = []
# for each movie actor, add as key to new_dict
for movie, actors in movies.items():
for actor in actors:
if not actor in films_dict.keys():
#print(actor)
performances_films = []
performances_films.append(movie)
films_dict[actor] = performances_films
else:
performances_films.append(movie)
films_dict[actor] = performances_films
return(films_dict)
Здесьэто вывод:
RUN 1
{'Rebel Wilson': ['How to Be Single'], 'Will Ferrell': ['The Lego
Movie'],
'Will Arnett': ['The Lego Movie'], 'Elizabeth Banks': ['The Lego Movie',
'The Lego Movie'], 'Alison Brie': ['The Lego Movie', 'The Lego Movie'],
'Dakota Johnson': ['How to Be Single']}
RUN 2
{'Will Arnett': ['The Lego Movie'], 'Dakota Johnson': ['How to Be Single'], 'Elizabeth Banks': ['The Lego Movie', 'The Lego Movie'], 'Rebel Wilson': ['How to Be Single'], 'Will Ferrell': ['The Lego Movie'], 'Alison Brie': ['The Lego Movie', 'The Lego Movie']}
Я думаю, что это либо итерация элементов dict в разном порядке при каждом запуске, либо сохранение данных из одного цикла в другой.В любом случае я не могу решить это.