2012-09-18 24 views
8

Çıktının beklenen biçimde olduğunu ancak yaml içinde aşağıdaki iç içe nesnelerin oluşturulmasının daha iyi bir yolu olup olmadığını merak etmek için yeniyim.yaml çok iç içe geçmiş ve python sözlüğü

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 

""") 

çıkışı:

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

cevap

14

Ben yaml cephesinde bazı yazarak kazandıracak iki şekilde düşünebiliriz.

kısa haritalama sözdizimini kullanın:

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} 

Kullanım takma adları:

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}} 
İlgili konular