def getValue(d, key):
for k, v in d.iteritems():
print "{0} == {1}".format(k, key)
if k == key:
return v
elif isinstance(v, dict):
getValue(v, key)
logging.error("Cannot find key in dictionary")
return ""
#d = getting the dictionary
getValue(d, "error_frames")
从插入函数的print语句中,我清楚地看到控制台中出现“error_frames == error_frames”,但是if语句没有被执行。为什么?通过使用模块xmltodict解析xml来构造字典。
答案 0 :(得分:12)
.format
调用对象的__str__
方法,其输出对于不同的对象可以是相同的。
In [1]: a = 1
In [2]: b = '1'
In [3]: print '{0} == {1}'.format(a, b)
1 == 1
In [4]: a == b
Out[4]: False
答案 1 :(得分:6)
也许print语句是从嵌套的递归调用中执行的。
elif isinstance(v, dict):
getValue(v, key)
那应该是return getValue(key)
吗?