2012-02-13 11 views
5

Uso PyYAML para trabajar con archivos YAML. Me pregunto cómo puedo verificar correctamente la existencia de alguna clave. En el ejemplo siguiente, la clave title está presente solo para list1. Quiero procesar el valor del título correctamente si existe, e ignorar si no está allí.Verifique la existencia de la clave YAML

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

Respuesta

11

Una vez que cargue este archivo con PyYAML, tendrá una estructura como esta:

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

Se puede recorrer con:

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

Si utiliza yaml.load, el resultado es un diccionario, por lo que puede usar in para verificar si existe una clave:

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 
Cuestiones relacionadas