1
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")

从我在函数中插入的打印语句中,我清楚地看到控制台中出现“error_frames == error_frames”,但 if 语句没有被执行。为什么?字典是通过使用模块 xmltodict 解析 xml 来构造的。

4

2 回答 2

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
于 2012-05-29T14:14:48.227 回答
6

也许 print 语句是从嵌套的递归调用中执行的。

    elif isinstance(v, dict):
        getValue(v, key)

应该是这样return getValue(key)吗?

于 2012-05-29T14:17:38.470 回答