2016-03-19 1 views
1

У меня есть список док-слова и словарь.Добавить словарь python в список

doc = [] 
somedict = {} 

somedict['facets'] = "blue" 
doc.append(somedict) 
somedict['facets'] = "green" 
doc.append(somedict) 

Ожидаемый результат, когда я даю команду

print doc 

Ожидаемый результат:

[ {'facets':'blue'} , {'facets':'green'} ] 

Present выход:

[{'facets': 'green'}, {'facets': 'green'}] 

ответ

0

право осуществление должно быть, как показано ниже:

doc = [] 
dict = {} 

dict['facets'] = "blue" 
doc.append(dict) 

dict = {} # Declare a new dict here 
dict['facets'] = "green" 
doc.append(dict) 

В вашем коде второе добавление для документа добавляет один и тот же один объект dict в качестве первого добавления, что приводит к документу, содержащему один и тот же объект dict дважды.

+0

thnks удовлетворительно :) – sumeetkarmali

1

Вы добавляете же словарь дважды. Добавление объекта в список не создает копию, вы просто добавляете другую ссылку на тот же объект.

Вы можете создать копию перед изменением ключа (somedict = somedict.copy()) или при добавлении (doc.append(somedict.copy())), но так как у вас есть только один ключ, я бы создать новый словарь вместо:

doc = [] 

somedict = {'facets': "blue"} 
doc.append(somedict) 
somedict = {'facets': "green"} 
doc.append(dict)` 

или даже

doc = [{'facets': "blue"}, {'facets': "green"}] 
Смежные вопросы