2012-02-13 16 views
5

Używam PyYAML do pracy z plikami YAML. Zastanawiam się, jak mogę właściwie sprawdzić istnienie jakiegoś klucza? W poniższym przykładzie klucz title jest obecny tylko dla listy1. Chcę przetworzyć wartość tytułu poprawnie, jeśli istnieje, i zignorować, jeśli jej tam nie ma.Sprawdź istnienie klucza YAML

list1: 
    title: This is the title 
    active: True 
list2: 
    active: False 

Odpowiedz

11

Po załadować ten plik PyYaml, będzie mieć strukturę takiego:

{ 
'list1': { 
    'title': "This is the title", 
    'active': True, 
    }, 
'list2: { 
    'active': False, 
    }, 
} 

Można iterację go:

for k, v in my_yaml.iteritems(): 
    if 'title' in v: 
     # the title is present 
    else: 
     # it's not. 
6

Jeśli używasz yaml.load, wynik to słownik, więc możesz użyć in, aby sprawdzić, czy klucz istnieje:

import yaml 

str_ = """ 
list1: 
    title: This is the title 
    active: True 
list2: 
    active: False 
""" 

dict_ = yaml.load(str_) 
print dict_ 

print "title" in dict_["list1"] #> True 
print "title" in dict_["list2"] #> False