Reputation: 845
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.
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}}}}}
Upvotes: 17
Views: 35584
Reputation: 4097
I can think of two ways that will save you some typing on the yaml front.
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}}
Upvotes: 28