在下面的代码中,如何匹配字典中“answer”和“nonanswer”之后的模式
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")
答案 0 :(得分: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"
答案 1 :(得分:2)
我很确定您的in
测试已被撤消。数据的格式为answer1
,永远不会出现在文字answer
中。请改为"answer" in ii
。
更具体地说,您可以使用startswith
方法,因为您的所有数据(至少在此示例中)实际上都以answer
或nonanswer
开头,您可能不想要匹配34argleanswer
形式的内容。