2010-08-04 8 views
0

Dans le code ci-dessous comment correspondre au modèle après « réponse » et « nonanswer » dans le dictionnairemodèle correspondant à l'aide de python

opt_dict=(
    {'answer1':1, 
    'answer14':1, 
    'answer13':12, 
    'answer11':6, 
    'answer5':5, 
    'nonanswer12':1, 
    'nonanswer11':1, 
    'nonanswer4':1, 
    'nonanswer5':1,}) 

Et

if opt_dict: 
    for ii in opt_dict: 
     logging.debug(ii) 
     logging.debug(opt_dict[ii]) 
     if ii in "nonanswer": 
      logging.debug(opt_dict[ii]) 
     elif ii in "answer": 
      logging.debug("answer founddddddddddddddddddddddddddddddd") 
      logging.debug(opt_dict[ii]) 
     else: 
      logging.debug("empty dict")   
+1

Je suis désolé de dire que je n'ai pas beaucoup d'idée de ce que vous demandez. Pouvez-vous élaborer sur votre question? Vous savez que les dictionnaires ne sont pas ordonnés, n'est-ce pas? L'approche générale pour poser des questions est de montrer ce que sont vos commentaires, ce que vous voulez et ce que vous avez essayé jusqu'ici pour y parvenir. – MattH

Répondre

2

Je n'ai pas gardé toute votre exploitation forestière, mais cela devrait fonctionner:

if opt_dict: 
    for key, value in opt_dict.items(): 
     if "nonanswer" in key: 
      print "nonanswer", value 
     elif "answer" in key: 
      print "answer", value 
     else: 
      raise Exception("invalid key") 
else: 
    print "empty dict" 
2

Je suis sûr que vous avez vos tests in inversés. Les données ont la forme answer1, qui ne sera jamais dans le littéral answer. Essayez plutôt "answer" in ii.

Pour être plus précis, vous pouvez utiliser la méthode startswith, puisque toutes vos données (au moins dans cet exemple) commence réellement avec answer ou nonanswer, et vous voudrez peut-être pas correspondre à quelque chose de la forme 34argleanswer.

Questions connexes