2015-08-05 1 views
1

Je suis nouveau sur Python alors s'il vous plaît, gardez-moi. J'essaie de comprendre comment faire défiler un ensemble de valeurs dans un fichier YAML. Le fichier est analysé en utilisant PyYAML et doit ensuite être introduit dans la boucle. Voici quelques YAML par exemple:Python conditionnel pour une boucle basée sur les données YAML

dohicky.yml

--- 
#Example file 
dohicky: 
    "1": 
    Stuff: 
     - Data 
     - Data 
    Morestuff: 
     - Data 
     - Data 
    "2": 
    Stuff: 
     - Data 
     - Data 
    Morestuff: 
     - Data 
     - Data 
    "n": 
    - Etc 

D'abord, je tire le contenu du YAML sur.

import yaml 
f = open('dohicky.yml') 
dohicky = yaml.safe_load(f) 
f.close() 

Maintenant, j'ai juste besoin soit une boucle ou une boucle while pour parcourir chaque numéro « id » sous « dohicky ».

for x in xrange(1, 2): 

Donc, évidemment, cela fonctionnerait, mais est défini de manière statique pour seulement 2 éléments. Je ne sais pas comment, par exemple:

"do while" id = dohicky["dohicky"]["x"] is true. #Not code, just concept! 

L'autre problème que je suis tout de suite en cours d'exécution est de savoir comment puis créer un objet dans cette boucle. Par exemple:

id(x) = dohicky(Pass other info from YAML to class) #Not code, just concept! 

Malheureusement, je ne suis pas assez familier avec Python encore (withPyYAML) pour comprendre la syntaxe. Toute aide est très appréciée!

* UPDATE * C'est un peu le code sudo, mais vous devriez comprendre ce que j'essaie de faire au moins.

import yaml 
f = open('dohicky.yml') 
dohicky = yaml.safe_load(f) 
f.close() 

for x in dohicky["dohicky"]["x"] 
     test = dohicky["dohicky"]["1"]["Stuff"] 
     print test 

Dans ce test, je suis juste l'impression de la sortie de « Stuff », mais en réalité, je dois créer un objet en utilisant ces données.

+3

Avez-vous essayé 'for x in dohicky: '? – Will

Répondre

2

Vous pouvez utiliser le code suivant pour itérer numérotés « id » sous « dohicky »:

for dohicky_id in dohicky['dohicky']: 
    stuff = dohicky['dohicky'][dohicky_id]['Stuff'] 

Dans ce cas, la substance est une liste de données dicts. Si vous ne pouvez pas, pour quelque raison que ce soit, utiliser le dictionnaire et convertir les dictionnaires de données en objets, vous pouvez le faire en regardant la question suivante: Convert Python dict to object?

+0

Parfait, excellent merci! Maintenant, j'ai juste besoin de lire pour l'obtenir dans les objets. – Atomiklan