我的代码如下
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)
。