2015-07-15 2 views
3

Я новичок в программировании на питоне. Входной файл X.yaml содержит список списков словарей. Я пытаюсь распечатать список и его элементы подписок.распечатать несколько списков YAML в словаре

Вход: X.Yaml

entities: 
     - level: undefined 
      name: a 
      refs: 
       - b 
      reqs: [] 
     - level: undefined 
      name: c 
      refs: 
       - b 
      reqs: [] 

Код:

data = yaml.load(yamlfile) 
for entity in data["entities"]: 
    #Needed help here. 

Желаемый результат:

-name: a 
refs: 
    - b 
reqs: [] 
-name: c 
refs: 
    - b 
reqs: [] 

ответ

0

Использование yaml.dump() с default_flow_style=False:

>>> print yaml.dump(data['entities'], default_flow_style=False) 
- level: undefined 
    name: a 
    refs: 
    - b 
    reqs: [] 
- level: undefined 
    name: c 
    refs: 
    - b 
    reqs: [] 

И если вы не хотите, «уровня», то сначала удалить, что из сущности:

>>> new_entities = [{key: value for key, value in entity.items() if key != 'level'} 
...     for entity in data['entities']] 
>>> 
>>> print yaml.dump(new_entities, default_flow_style=False) 
- name: a 
    refs: 
    - b 
    reqs: [] 
- name: c 
    refs: 
    - b 
    reqs: [] 

>>> 

Edit: Если список и словарь постижения запутаны, это является долгосрочной (и более низкой производительность) способ написать:

>>> new_entities = [] 
>>> for entity in data['entities']: 
...  new_ent = {} 
...  for key, value in entity.items(): 
...   if key != 'level': 
...    new_ent[key] = value 
...  new_entities.append(new_ent) 
... 
>>> # then dump `new_entities` 
Смежные вопросы