2010-08-04 106 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的東西。