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

Tak*_*kun 1 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")
Run Code Online (Sandbox Code Playgroud)

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

eum*_*iro 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
Run Code Online (Sandbox Code Playgroud)


eca*_*mur 6

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

    elif isinstance(v, dict):
        getValue(v, key)
Run Code Online (Sandbox Code Playgroud)

应该是return getValue(key)吗?