我本以为这个问题有一个简单的解决方案,但结果证明我错了。
我有一个嵌套字典:
my_dict = { "username": "myEmail@email.com",
"name": { "first": "John", "last": "Doe" },
"occupation": "Web Developer" }
我编写了一个递归函数,将其展开到现有字典中:
def adder(my_dict, existing_dict):
for k, v in my_dict:
if not isinstance(v, dict):
existing_dict[k] = v
else:
adder(v.iteritems(), existing_dict)
return existing_dict
existing_dict = { "role": "employee" }
adder(my_dict.iteritems(), existing_dict)
在循环中一切都进行得很顺利,直到我遇到递归,此时my_dict
从字典变成了dictionary-itemiterator object at 0x07f6750086c00
。
我没有看到任何明显的错误,尽管看起来v.iteritems()
会破坏一切(但循环仍然完成)。有什么想法吗?
iteritems
?递归调用将迭代器作为my_dict
。另一方面,遍历字典只会得到键,因此for k, v in my_dict
需要调用iteritems
。 - user2357112