Как получить список dict вместо использования collection.defaultdict в python

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

Данный вход: –

parse_list = ['A','B','C','D'] 

Требуемый выход: –

 data = [ {'name': 'A', 'childs': [ {'name': 'B', 'childs': [ {'name': 'C', 'childs': [ {'name': 'D', 'childs': none }]}]}]}] 

Мой код: –

 from collections import defaultdict class_dict =defaultdict(list) data =defaultdict(list) parse_list.reverse() def create_dict(parse_list,class_dict): for index ,listitem in enumerate(parse_list): new_class_dict = defaultdict(list) new_class_dict.__setitem__('name', listitem) new_class_dict['childs'].append(class_dict) class_dict = new_class_dict return class_dict data = create_dict(parse_list,class_dict) import yaml with open('data.yml', 'w') as outfile: outfile.write( yaml.dump(data, default_flow_style=False)) 

Однако из-за defaultdict (list), я всегда получаю много дополнительного отступа в yaml, чего не ожидается. Есть ли другой способ получить [{….}] вместо использования collection.defaultdict.

3 Solutions collect form web for “Как получить список dict вместо использования collection.defaultdict в python”

Рекурсивным способом

 parse_list = ['A','B','C','D'] def createdict(l, d): if len(l) == 0: return None d = dict() d['name'] = l[0] d['childs'] = [createdict(l[1:], d)] return d resultDict = createdict(parse_list, dict()) 

Вы можете добиться этого просто так

 parse_list = ['A','B','C','D'] dicton={} for i in reversed(parse_list): dicton['child']=[dicton] dicton['name']=i print dicton #output {'name': 'A', 'child': [{'name': 'B', 'child': [{'name': 'C', 'child': [{'name': 'D', 'child': [{}] }]}]}]} 

Вот рекурсивное решение

 parse_list = ['A','B','C','D'] def descend(l): if l: return [{'name': l[0], 'childs': descend(l[1:])}] else: return None data = descend(parse_list) 
  • как писать файл yaml
  • Преобразование файла YAML в python dict
  • Получение ученого представления данных из неконтролируемого обучения в pylearn2
  • Установите pyyaml ​​с помощью pip / Add PyYaml в качестве зависимости от pip
  • Как сохранить или прочитать литерал возврата каретки и новой строки из yaml в python
  • В чем заключается основное различие между pickle и yaml в Python?
  • Можно ли исправить допустимый YAML с привязками / ссылками, отключенными с помощью Ruby или Python?
  • Ошибки pyYAML в строке «!» в строке
  •  
    Interesting Posts for Van-Lav
    Python - лучший язык программирования в мире.