在字典中打印多个YAML列表

时间:2015-07-15 06:55:50

标签: python-2.7 list dictionary printing yaml

我是python编程的新手。输入的X.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: []

1 个答案:

答案 0 :(得分: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: []

>>>

编辑:如果列表和字典理解混乱,这是编写它的长(并且性能较低)方式:

>>> 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`