""的意外行为在dict

时间:2016-11-11 19:11:02

标签: python dictionary

我遍历json对象,存储在myData中 当我这样做时:

for something in range(1,10):
    currentThing = "w{}".format(something)
    someData = myData["Response"][currentThing.upper()]
    for j in someData:
        c += 1
    print currentThing + " " + c
    c = 0

我得到了预期的结果。 w1w9会被计算并显​​示出来。

但是,当我添加这些行

for something in range(1,10):
    currentThing = "w{}".format(something)
    if currentThing in myData["Response"]:
        someData = myData["Response"][currentThing.upper()]
        for j in someData:
            c += 1
        print currentThing + " " + c
        c = 0

它省略w1w3w4w9。 那是为什么?!

2 个答案:

答案 0 :(得分:4)

在第二个代码块中,您添加的if语句需要转换为大写。将该行更改为:

if currentThing.upper() in myData["Response"]:

答案 1 :(得分:0)

由于某种原因,您检查密钥currentThing是否在myData["Response"]中,但是继续从中获取currentThing.upper()。 因此,检查currentThing.upper()是否在myData["Response"],而不是感觉就像你应该做的那样