2016-04-06 2 views
-3

Я хотел бы иметь словарь, добавленный с новыми словарями.Добавить дик в вложенный dict python

t = {} 
t['bush_mod']={} # Toplevel 
ana1 = {} 
ana1['ana1_lin_001']={} 
t['bush_mod'] = ana1 # Add below Toplevel 

ana2 = {} 
ana2['ana2_lin_001'] = {} 
ana2['ana2_lin_002'] = {} 

t['bush_mod'] = ana2 # Add below Toplevel 

Когда я добавляю ana2 словарь t получает перезаписаны, который я не хочу.

OUT: {'bush_mod': {'ana2_lin_001': {}, 'ana2_lin_002': {}}} 

Я хотел бы иметь ana2 в качестве второго Dict (приложенном) ниже верхнего уровня.

OUT: {'bush_mod': {'ana1_lin_001': {}},{'ana2_lin_001': {}, 'ana2_lin_002': {}}} 

Было бы действительно полезно, если бы кто-то мог помочь мне с синтаксисом.

Заранее благодарен!

+0

Я думаю, что вам нужен список – Claudiu

+4

Конечно, вы добавляете тот же ключ с новым значением. У вас также не может быть желаемого результата, если вы хотите, чтобы несколько значений на один ключ использовали список в качестве значения и добавляли каждый новый dict –

+0

Спасибо за ответ .. я изменил его как список, чтобы заставить его работать – sat0408

ответ

1

Если вы хотите придерживаться вложенных словарей, которые я думаю, dict.update может быть вариант:

t = {} 
t['bush_mod']={} 

ana1 = {} 
ana1['ana1_lin_001']={} 

ana2 = {} 
ana2['ana2_lin_001'] = {} 
ana2['ana2_lin_002'] = {} 

t['bush_mod'].update(ana1) 
t['bush_mod'].update(ana2) 

Такое, что t является:

{'bush_mod': {'ana1_lin_001': {}, 'ana2_lin_001': {}, 'ana2_lin_002': {}}} 

dict.update здесь добавляет пары ключей и значений от ana1 и ana2 до словаря t['bush_mod] `

+0

Это именно то, что я искал. Теперь мне не нужно изменять остальную часть моего кода;) Спасибо – sat0408

-2

вам нужно использовать различные ключи для каждого элемента в Словаре т ... это переопределение, потому что вы использовали «bush_mod» дважды ...

вам нужно сделать т [ «bush_mod»] = [] затем добавьте этот список с вещами.

t['bush_mod'] = [] 
t['bush_mod'].append(ana1) 
t['bush_mod'].append(ana2) 
Смежные вопросы