2015-03-07 5 views
0

Я новичок в Python, и новый для питона dicitonariesPython назначить словарь в словаре

У меня есть цикл, который считывает имена книг и присваивает их в словарь. Я затем назначить их на другой словарь на основе ISBN:

 

book = {}; 
booklist = {}; 

for line in file.readlines(): 
    #parse file and assign to dict book 
    ... 
    isbn=splitline[0]; 
    title=splitline[1] 
    description=splitline[2]  
    pubdate=splitline[3]; 
    author=splitline[4] 
    ... 
    book["isbn"]=isbn  
    book["title"]=title; 
    book["description"]=description; 
    book["pubdate"]=pubdate; 
    book["author"]=author; 
    ... 

    booklist[isbn] =book; 

Когда я бегу, я вижу, что Booklist имеет одни и те же книги. Ключи верны isbn, но книжный словарь - это последняя книга! Когда я пройду через него, я могу найти словарный словарь, который имеет правильные значения. Но когда после завершения кода все ключи в списке книг назначаются последней анализируемой книге. любой внушающий сын, как я могу сделать список книг, указывать на правильные книги?

+3

Это питон, точка с запятой не нужны. –

ответ

4

Вы не определяете словарь новой книги внутри цикла, поэтому каждый раз, используя цикл, вы повторно используете один и тот же словарь много раз: и вы просто назначаете один и тот же ключ нескольким клавишам.

Вместо этого убедитесь, что вы определить новую книгу Dict в начале каждой итерации:

booklist = {} 
for line in file: 
    book = {} 
    ... 
    booklist['isbn'] = book 
+1

Или просто 'для строки в файле' –

+1

Да, хороший момент, отредактирован. –

+0

Спасибо, ребята. Очень признателен. – Arun

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