2010-08-04 149 views
0

在下面的代码如何在字典中的“答案”和“nonanswer”后的图案匹配模式匹配使用python

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

而且

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

我很抱歉地说我不太清楚你在问什么。请你能详细说明你的问题吗?你知道字典是无序的,对吗?提出问题的一般方法是显示你的输入是什么,你想要什么输出以及你为了达到这个目的而尝试的东西。 – MattH 2010-08-04 13:47:16

回答

2

我并没有把所有的日志记录,但这应该工作:

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

我很确定你有你的in测试逆转。数据的格式为answer1,它永远不会在文字answer中。改为尝试"answer" in ii

更具体地讲,你可以(在这个例子至少)使用startswith方法,因为所有的数据实际上answernonanswer开始,你可能不想匹配形式34argleanswer的东西。