Объединить несколько строк из списка - Python - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь объединить несколько значений из списка, чтобы в моем конечном результате не было дубликатов.

У меня есть этот код:

import imdb
ia = imdb.IMDb()
top250 = ia.get_top250_movies()
i = 0;
for topmovie in top250:
    # First, retrieve the movie object using its ID
    movie = ia.get_movie(topmovie.movieID)
    # Print the movie's genres
    for genre in movie['genres']:
        cast = movie.get('cast')
        topActors = 2
        i = i+1;
        for actor in cast[:topActors]:
            if i <= 10:
                print('Movie: ', movie, ' Genre: ', genre, 'Actors: ', actor['name']);
            else:
                break;

И яполучить это:

Movie:  The Shawshank Redemption  Genre:  Drama Actors:  Tim Robbins
Movie:  The Shawshank Redemption  Genre:  Drama Actors:  Morgan Freeman
Movie:  The Godfather  Genre:  Crime Actors:  Marlon Brando
Movie:  The Godfather  Genre:  Crime Actors:  Al Pacino
Movie:  The Godfather  Genre:  Drama Actors:  Marlon Brando
Movie:  The Godfather  Genre:  Drama Actors:  Al Pacino
Movie:  The Godfather: Part II  Genre:  Crime Actors:  Al Pacino
Movie:  The Godfather: Part II  Genre:  Crime Actors:  Robert Duvall
Movie:  The Godfather: Part II  Genre:  Drama Actors:  Al Pacino
Movie:  The Godfather: Part II  Genre:  Drama Actors:  Robert Duvall
Movie:  The Dark Knight  Genre:  Action Actors:  Christian Bale
Movie:  The Dark Knight  Genre:  Action Actors:  Heath Ledger
Movie:  The Dark Knight  Genre:  Crime Actors:  Christian Bale
Movie:  The Dark Knight  Genre:  Crime Actors:  Heath Ledger
Movie:  The Dark Knight  Genre:  Drama Actors:  Christian Bale
Movie:  The Dark Knight  Genre:  Drama Actors:  Heath Ledger
Movie:  The Dark Knight  Genre:  Thriller Actors:  Christian Bale
Movie:  The Dark Knight  Genre:  Thriller Actors:  Heath Ledger
Movie:  12 Angry Men  Genre:  Crime Actors:  Martin Balsam
Movie:  12 Angry Men  Genre:  Crime Actors:  John Fiedler

Можно ли получить следующие агрегаты?

Movie:  The Shawshank Redemption  Genre:  Drama Actors:  Tim Robbins|Morgan Freeman
Movie:  The Godfather  Genre:  Crime|Drama  Actors:  Marlon Brando|Al Pacino|
Movie:  The Godfather: Part II  Genre:  Crime|Drama  Actors:  Al Pacino|Robert Duvall
Movie:  The Dark Knight  Genre:  Action|Crime|Drama|Thriller   Actors:  Christian Bale|Heath Ledger
Movie:  12 Angry Men  Genre:  Crime Actors:  Martin Balsam|John Fiedler

Можно ли получить это с помощью списков?Или мне нужно сохранить все результаты в кадре данных, а затем использовать групповую передачу?

спасибо!

1 Ответ

0 голосов
/ 19 сентября 2018

Попробуйте использовать метод str.join ():

import imdb
ia = imdb.IMDb()
top250 = ia.get_top250_movies()
i = 0;
for topmovie in top250:
    # First, retrieve the movie object using its ID
    movie = ia.get_movie(topmovie.movieID)
    cast = movie.get('cast')
    topActors = 2
    i = i+1;
    actor_names= [actor['name'] for actor in cast[:topActors] ]
    if i <= 10:
         print('Movie: ', movie, ' Genre: ', '|'.join(movie['genres']), 'Actors: ', '|'.join(actor_names));
    else:
         break;
...