2016-12-10 4 views
1
def CreateDataBaseByActor(file): 
    dataBase = dict() 
    set = {} 
    f = open(file,"r") 
    for line in f: 
     set = line.split(', ') 
     for movie in set[1:]: 
      dataBase[movie] = set[0] 
    return dataBase 

У меня есть файл, каждая строка записывается в формате: ACTOR_NAME, movie1, видеофильм2, movie3 ... пример:добавление значения к набору в словаре

  • Сильвестр Сталлоне, Рокки, Рэмбо, Assassins

  • Джулианна Мур, ассасины, Ганнибал

    проблема заключается в том, что когда я пытаюсь добавить в фильм другое имя актера (например: в первой строке, ключ - Assassins- имеет значение Sylvester Stallone, а во второй строке - Assassin - заменено вместо добавленного)

+0

Как вы думаете, 'набор = line.split («») 'это делает к ранее определенному 'set = {}'? Плюс-установки не имеют индексов и не поддерживают нарезку, если вы планируете использовать их таким образом. –

+1

'set = {}' не создает набор. Он создает словарь с именем set. Не все равно использовать это имя. – ayhan

ответ

0

Предполагая, что вы хотите вернуть словарь, который отображает названия фильмов в список участников в рамках каждого (что не ясно из названия функции), то этот код должен сделайте это за вас. (Обратите внимание, что я изменил переменную с именем set называться fields, так как это не очень хорошая идея, чтобы назвать переменные после типов.)

def CreateDataBaseByActor(file): 
    dataBase = dict() 
    f = open(file, "r") 
    for line in f: 
     fields = line.split(', ') 
     actor = fields[0] 
     for movie in fields[1:]: 
      dataBase.setdefault(movie, []).append(actor) 
    return dataBase 
Смежные вопросы