2015-06-21 4 views
-5

Я хочу, чтобы создать вложенные словари, как на примере ниже:Как создать словари многоуровневые легко

rule={} 
rule["exports-rule-info-2"]["pathname"] = qtree_name 
rule["exports-rule-info-2"]["security-rules"]["security-rule-info"]["read-write"]["exports-hostname-info"]["name"] = security_rules 
rule["exports-rule-info-2"]["security-rules"]["security-rule-info"]["root"]["exports-hostname-info"]["name"] = security_rules 
rule["exports-rule-info-2"]["security-rules"]["security-rule-info"]["sec-flavor"]["sec-flavor-info"]["flavor"] = 'sec' 
+1

Пожалуйста, сформулируйте реальный вопрос/отправьте код t o проиллюстрируйте, в какой момент вы застряли –

ответ

1

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

import collections 
infinitedict = lambda: collections.defaultdict(infinitedict) 
rule = infinitedict() 

После сдачи ваши вещи в defaultdict, результат будет выглядеть примерно так (хотя и не точно как это, из-за defaultdict немного другое представление):

{'exports-rule-info-2': { 
    'security-rules': { 
     'security-rule-info': { 
      'read-write': {'exports-hostname-info': {'name': 'security_rules '}}, 
      'root': {'exports-hostname-info': {'name': 'security_rules'}}, 
      'sec-flavor': {'sec-flavor-info': {'flavor': 'sec'}}}}, 
    'pathname': 'qtree_name'}} 
0
from collections import defaultdict 

tree = lambda: defaultdict(tree) 
rule = tree() 
rule["exports-rule-info-2"]["pathname"] = qtree_name 
rule["exports-rule-info-2"]["security-rules"]["security-rule-info"]["read-write"]["exports-hostname-info"]["name"] = security_rules 
rule["exports-rule-info-2"]["security-rules"]["security-rule-info"]["root"]["exports-hostname-info"]["name"] = security_rules 
rule["exports-rule-info-2"]["security-rules"]["security-rule-info"]["sec-flavor"]["sec-flavor-info"]["flavor"] = 'sec' 

Really хотя, приложите некоторые усилия к вашим вопросам ...

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