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

関数に挿入したprintステートメントから、コンソールに「error_frames == error_frames」が表示されているのがはっきりとわかりますが、ifステートメントが実行されていません。なんで?辞書は、xmlをモジュールxmltodictで解析することによって構築されます。

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 に答える