首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >格式化yaml以包含嵌套字典?

格式化yaml以包含嵌套字典?
EN

Stack Overflow用户
提问于 2020-01-17 00:10:29
回答 2查看 40关注 0票数 0

抱歉,如果这是一个愚蠢的问题,我对yaml配置(一般情况下是+配置)非常陌生,一切都有点混乱。我有一个这样的文件:

代码语言:javascript
复制
hosts:
  - hostid: 43842
    tag: "name"
    items:
      port: "some port"
      in: 2342124
      out: 2349334
  - hostid: 24586
    tag: "..."

诸若此类。此配置适用于我的项目(用python制作),但我想在“items”下添加更多端口值,并让它们有自己的输入/输出坐标。我似乎找不到合适的格式。有什么方法可以解决这个问题呢?提前谢谢你。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-17 00:33:19

您可以在项目中包含对象列表。多个端口。

代码语言:javascript
复制
hosts:
  - hostid: 43842
    tag: "name"
    items:
      - port: "some port"
        in: 2342124
        out: 2349334
      - port: "some other port"
        in: 2342124
        out: 2349334

或者,如果您希望同一端口下有多个输入/输出值,您可以在某些属性下添加一个列表,例如data

代码语言:javascript
复制
hosts:
  - hostid: 43842
    tag: "name"
    items:
      port: "some port"
      data:
        - in: 2342124
          out: 2349334
        - in: 2342124
          out: 2349334
票数 0
EN

Stack Overflow用户

发布于 2020-01-17 00:28:37

看起来items是一种dict类型,这意味着您不能拥有相同的键,或者一遍又一遍地重写这些值。您需要的是dicts的list

我们可以使用pyyaml (pip install pyyaml)来实现这一点。下面是一个例子

代码语言:javascript
复制
import yaml

contents = """
hosts:
  - hostid: 43842
    tag: "name"
    items:
      port: "some port"
      in: 2342124
      out: 2349334"""

# cook the data a little to make items a list instead of a dict
data = yaml.full_load(contents)
for d in data.get('hosts'):
    d['items'] = [d.get('items')]

# modify whatever we are interested in
for host in data.get('hosts'):
    if host.get('hostid') == 43842:
        host['items'].append({
            'port': 'another port',
            'in': 12345,
            'out': 12345
        })

# show our modifications
print(yaml.dump(data))

这将打印:

代码语言:javascript
复制
hosts:
- hostid: 43842
  items:
  - in: 2342124
    out: 2349334
    port: some port
  - in: 12345
    out: 12345
    port: another port
  tag: name
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59773689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档