[英]yaml multi nested and python dictionary
I am new to yaml the output is in the expected format but wondering if there is a better way to construct the below nested objects in yaml. 我是yaml的新手,输出是预期的格式,但想知道是否有更好的方法在yaml中构造下面的嵌套对象。
import yaml
yaml.load ("""
test1:
a:
a1:
a2:
a3: 0
b3: 0
c3: 0
b2:
a3: 0
b3: 0
c3: 0
c2:
a3: 0
b3: 0
c3: 0
b1:
a2:
a3: 0
b3: 0
c3: 0
b2:
a3: 0
b3: 0
c3: 0
c2:
a3: 0
b3: 0
c3: 0
c1:
a2:
a3: 0
b3: 0
c3: 0
b2:
a3: 0
b3: 0
c3: 0
c2:
a3: 0
b3: 0
c3: 0
b:
a1:
a2:
a3: 0
b3: 0
c3: 0
b2:
a3: 0
b3: 0
c3: 0
c2:
a3: 0
b3: 0
c3: 0
b1:
a2:
a3: 0
b3: 0
c3: 0
b2:
a3: 0
b3: 0
c3: 0
c2:
a3: 0
b3: 0
c3: 0
c1:
a2:
a3: 0
b3: 0
c3: 0
b2:
a3: 0
b3: 0
c3: 0
c2:
a3: 0
b3: 0
c3: 0
c:
a1:
a2:
a3: 0
b3: 0
c3: 0
b2:
a3: 0
b3: 0
c3: 0
c2:
a3: 0
b3: 0
c3: 0
b1:
a2:
a3: 0
b3: 0
c3: 0
b2:
a3: 0
b3: 0
c3: 0
c2:
a3: 0
b3: 0
c3: 0
c1:
a2:
a3: 0
b3: 0
c3: 0
b2:
a3: 0
b3: 0
c3: 0
c2:
a3: 0
b3: 0
c3: 0
""")
output: 输出:
'test1': {'a': {'a1': {'c2': {'c3': 0, 'a3': 0, 'b3': 0}, 'a2': {'c3': 0, 'a3': 0, 'b3': 0}, 'b2': {'c3': 0, 'a3': 0, 'b3': 0}}, 'c1': {'c2': {'c3': 0, 'a3': 0, 'b3': 0}, 'a2': {'c3': 0, 'a3': 0, 'b3': 0}, 'b2': {'c3': 0, 'a3': 0, 'b3': 0}}, 'b1': {'c2': {'c3': 0, 'a3': 0, 'b3': 0}, 'a2': {'c3': 0, 'a3': 0, 'b3': 0}, 'b2': {'c3': 0, 'a3': 0, 'b3': 0}}}, 'c': {'a1': {'c2': {'c3': 0, 'a3': 0, 'b3': 0}, 'a2': {'c3': 0, 'a3': 0, 'b3': 0}, 'b2': {'c3': 0, 'a3': 0, 'b3': 0}}, 'c1': {'c2': {'c3': 0, 'a3': 0, 'b3': 0}, 'a2': {'c3': 0, 'a3': 0, 'b3': 0}, 'b2': {'c3': 0, 'a3': 0, 'b3': 0}}, 'b1': {'c2': {'c3': 0, 'a3': 0, 'b3': 0}, 'a2': {'c3': 0, 'a3': 0, 'b3': 0}, 'b2': {'c3': 0, 'a3': 0, 'b3': 0}}}, 'b': {'a1': {'c2': {'c3': 0, 'a3': 0, 'b3': 0}, 'a2': {'c3': 0, 'a3': 0, 'b3': 0}, 'b2': {'c3': 0, 'a3': 0, 'b3': 0}}, 'c1': {'c2': {'c3': 0, 'a3': 0, 'b3': 0}, 'a2': {'c3': 0, 'a3': 0, 'b3': 0}, 'b2': {'c3': 0, 'a3': 0, 'b3': 0}}, 'b1': {'c2': {'c3': 0, 'a3': 0, 'b3': 0}, 'a2': {'c3': 0, 'a3': 0, 'b3': 0}, 'b2': {'c3': 0, 'a3': 0, 'b3': 0}}}}}
I can think of two ways that will save you some typing on the yaml front. 我可以想到两种方法可以节省你在yaml前面的打字。
Use the short mapping syntax: 使用短映射语法:
test1:
a:
a1:
a2: {a3: 0, b3: 0, c3: 0}
b2: {a3: 0, b3: 0, c3: 0}
c2: {a3: 0, b3: 0, c3: 0}
b1:
a2: {a3: 0, b3: 0, c3: 0}
b2: {a3: 0, b3: 0, c3: 0}
c2: {a3: 0, b3: 0, c3: 0}
c1:
a2: {a3: 0, b3: 0}
Use aliases: 使用别名:
entry: &aliasentry
a2: {a3: 0, b3: 0, c3: 0}
b2: {a3: 0, b3: 0, c3: 0}
c2: {a3: 0, b3: 0, c3: 0}
test1:
a:
a1: *aliasentry
b1: *aliasentry
c1: {a2: {a3: 0, b3: 0}}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.