2016-12-16 3 views
-5

Мне нужно превратить содержимое этого файла в словарь, чтобы каждый ключ в dict был именем фильма, и каждое значение - это имена действующих лиц, которые играют в нем внутри набора. Я думал о чтении файла, помещая каждое имя фильма в список, а не делаю его для удаления дубликатов. то, петля, чтобы сделать каждое название фильма ключевым, проблема в следующем? как сделать Я делаю значения имени актера?Файл к установленному словарю

комментарий: его текстовый файл (.txt) Пример содержимого файла:

Brad Pitt, Sleepers, Troy, Meet Joe Black, Oceans Eleven, Seven, Mr & Mrs Smith 
Tom Hanks, You have got mail, Apollo 13, Sleepless in Seattle, Catch Me If You Can 
Meg Ryan, You have got mail, Sleepless in Seattle 
Diane Kruger, Troy, National Treasure 
Dustin Hoffman, Sleepers, The Lost City 
Anthony Hopkins, Hannibal, The Edge, Meet Joe Black, Proof 
Alec Baldwin, The Edge, Pearl Harbor 
Angelina Jolie, Bone Collector, Lara Croft Tomb Raider, Mr & Mrs Smith 
Denzel Washington, Bone Collector, The Siege, American Gangster 
Julia Roberts, Pretty Woman, Oceans Eleven, Runaway Bride 
Gwyneth Paltrow, Shakespeare in Love, Bounce, Proof 
Russell Crowe, Gladiator, A Beautiful Mind, Cinderella Man, American Gangster 
Sylvester Stallone, Rocky, Rambo, Assassins 
Johnny Depp, Edward Scissorhands, The Pirates of Caribbean, Finding Neverland 
Leonardo Di Caprio, Titanic, Blood Diamond, The Departed, Catch Me If You Can 
Antonio Banderas, The Mask of Zorro, Desperado 
Tom Cruise, Top Gun, Mission Impossible, Jerry Maguire, A Few Good Men 
Kate Winslet, Titanic, Finding Neverland 
George Clooney, Oceans Eleven, Intolerable Cruelty 
Matt Damon, Good Will Hunting, Bourne Identity, Bourne Ultimatum, The Departed 
Ben Affleck, Bounce, Good Will Hunting, Pearl Harbor 
Catherine Zeta Jones, The Mask of Zorro, Intolerable Cruelty 
Morgan Freeman, Bone Collector, Seven, Million Dollar Baby, Bruce Almighty 
Bruce Willis, Die Hard, The Sixth Sense, Pulp Fiction, The Siege 
Julianne Moore, Assassins, Hannibal 
Salma Hayek, Desperado, Wild Wild West 
Will Smith, Wild Wild West, Pursuit of Happyness, Hitch, Men in Black 
Kevin Bacon, A Few Good Men, Sleepers 
Jim Carrey, The Mask, Bruce Almighty, Ace Ventura, Me-Myself & Irene 
Renee Zellweger, Me-Myself & Irene, Jerry Maguire, Cinderella Man 
+0

что-то более подробное пожалуйста –

ответ

0

Даже если входной текстовый файл, он может быть прочитан с Python csv модуля, так как она будет отформатирована правильно для одного, и это делает обработку данных и создание самого словаря относительно прямолинейным.

Форматирование результатов немного извилистое, поскольку я хотел, чтобы это было определенным образом, но это не то, о чем вы спрашиваете, так или иначе? ;-)

#!/usr/bin/env python2 
import csv 

# Create and populate the target dictionary from the data in the file. 
movie_actors_dict = {} 
with open('actors.txt', 'rb') as csvfile: 
    for row in csv.reader(csvfile, skipinitialspace=True): 
     actor, movies = row[0], row[1:] 
     for movie in movies: 
      movie_actors_dict.setdefault(movie, set()).add(actor) 

# Display resulting dictionary. 
print('{') 
representation = ',\n'.join((' {!r}: {{\n'.format(movie) 
          + ',\n'.join('  {!r}'.format(actor) 
           for actor in sorted(movie_actors_dict[movie])) 
          + '\n }') for movie in sorted(movie_actors_dict)) 
print(representation) 
print('}') 

Пример вывода:

{ 
    'A Beautiful Mind': { 
     'Russell Crowe' 
    }, 
    'A Few Good Men': { 
     'Kevin Bacon', 
     'Tom Cruise' 
    }, 
    'Ace Ventura': { 
     'Jim Carrey' 
    }, 
    'American Gangster': { 
     'Denzel Washington', 
     'Russell Crowe' 
    }, 
    'Apollo 13': { 
     'Tom Hanks' 
    }, 
    'Assassins': { 
     'Julianne Moore', 
     'Sylvester Stallone' 
    }, 
    'Blood Diamond': { 
     'Leonardo Di Caprio' 
    }, 
    'Bone Collector': { 
     'Angelina Jolie', 
     'Denzel Washington', 
     'Morgan Freeman' 
    }, 
    ... etc, etc 
} 
+0

я использую Python 2, так что этот код не похоже на работу (из-за * кино), также могли бы вы, пожалуйста, объясните эту строку «для актеров, * фильмов в csv.reader (csvfile, skipinitialspace = True):« –

+0

Вы должны были пометить (и, возможно, указать в своем вопросе), какую версию вы использовали, потому что все, о чем вы спрашиваете связаны с новыми вещами в версии 3. Почему вы используете версию 2? – martineau

+0

@martineau OP отметил этот вопрос как python-2.7 – shash678

Смежные вопросы