Python:在操作字典和JSON时获取错误(字符串索引必须是整数,而不是unicode)

时间:2015-12-20 10:39:28

标签: python json dictionary

我的代码如下 dict1和dict 2的内容打印在输出下面 这段代码是我程序的一部分,其中dict1和dict2仅由程序生成并作为输入提供给这段代码。
当我通过明确声明dict1和dict2来运行代码的下方代码作为一个单独的程序时,它完美地工作。当我在我的程序中使用此代码片段时dict1和dict2自动生成它会抛出输出中给出的错误。
注意:
程序用K(值为dict2)创建新的dict:v(dict1的值),其中两个dict的键都相同。

print dict1
print dict2
def walk(dict1, dict2):
    output = {}
    for key, value in dict1.iteritems():
        if isinstance(value, dict):
            output[dict2[key]] = walk(value, dict2)
        else:
            output[dict2[key]] = value
    return output


output = walk(dict1, dict2)
print output

输出是:

{u'one': u'ele-ven', u'-two': u'twe.lve'}    #This is dict1
{"one": "red", "two": "blue"}                   # this is dict2
Traceback (most recent call last):
File "z.py", line 68, in <module>
output = walk(my_data, dictionary)
File "z.py", line 62, in walk
output[dict2[key]] = walk(value, dict2)
File "z.py", line 64, in walk
output[dict2[key]] = value
TypeError: string indices must be integers, not unicode

预期的O / P

{u'red: u'ele-ven', u'blue': u'twe.lve'} 

或者json字符串也会像

一样
{"red": "ele-ven", "blue": "twe.lve"}

1 个答案:

答案 0 :(得分:2)

dict2显然根本不是一个字典,而是字符串;大概是JSON。您可能需要先解析它:dict2 = json.loads(dict2)