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


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

最佳答案

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

10-07 14:22