2012-09-18 16 views
8

Jestem nowy dla yaml wyjście jest w oczekiwanym formacie, ale zastanawiasz się, czy istnieje lepszy sposób na skonstruowanie poniższych obiektów zagnieżdżonych w yaml.yaml multi nested i python słownik

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 

""") 

wyjściowa:

'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}}}}} 

Odpowiedz

14

mogę myśleć dwa sposoby, które pozwoli Ci zaoszczędzić trochę pisania na froncie YAML.

Użyj krótki składnię odwzorowania:

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} 

używać aliasów:

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}}