为什么这些字符串不相等? (蟒蛇)

时间:2012-05-29 14:13:22

标签: python

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来构造字典。

2 个答案:

答案 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)吗?