Определение вложенного словаря в python

Я хочу определить вложенный словарь в python. Я попробовал следующее:

keyword = 'MyTest' # Later I want to pull this iterating through a list key = 'test1' sections = dict(keyword={}) #This is clearly wrong but how do I get the string representation? sections[keyword][key] = 'Some value' 

Я могу сделать это:

 sections = {} sections[keyword] = {} 

Но тогда в Pycharm есть предупреждение, согласно которому он может быть определен с помощью словарной метки.

Может ли кто-нибудь указать, как этого добиться?

 keyword = 'MyTest' # Later I want to pull this iterating through a list key = 'test1' sections = {keyword: {}} sections[keyword][key] = 'Some value' print(sections) {'MyTest': {'test1': 'Some value'}} 

dict(keyword={}) создает dict с строкой "keyword" как ключ, а не значение ключевого слова variable.

 In [3]: dict(foo={}) Out[3]: {'foo': {}} 

В тех случаях, когда использование литерала dict фактически использует значение переменной, как указано выше.

 sections = {} keyword = 'MyTest' # If keyword isn't yet a key in the sections dict, # add it and set the value to an empty dict if keyword not in sections: sections[keyword] = {} key = 'test1' sections[keyword][key] = 'Some value' 

Альтернативно вы можете использовать defaultdict, который автоматически создаст внутренний словарь при первом доступе ключевого слова

 from collections import defaultdict sections = defaultdict(dict) keyword = 'MyTest' key = 'test1' sections[keyword][key] = 'Some value'