我是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
""")
输出:
'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}}}}}
答案 0 :(得分:15)
我可以想到两种方法可以节省你在yaml前面的打字。
使用短映射语法:
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}
使用别名:
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}}