【问题标题】:print multiple YAML lists in a dictionary在字典中打印多个 YAML 列表
【发布时间】:2015-10-04 01:58:41
【问题描述】:

我是 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: []

【问题讨论】:

    标签: python-2.7 list dictionary printing yaml


    【解决方案1】:

    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`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-03
      • 1970-01-01
      • 2014-06-29
      • 2019-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多