dip*_*rus 5 python recursion dictionary python-2.7
我以为我有一个简单的解决方案来解决这个问题,但事实证明我已经失败了。
我有一个嵌套字典:
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()破坏了一切(但循环结束了)。有任何想法吗?
我同意上面的观点 - 迭代字典本身只迭代键。
另外,我认为您想从函数返回existing_dict,my_dict未修改。另外,您希望将字典传递回函数,而不是迭代器。
def adder(my_dict, existing_dict):
    for k, v in my_dict.iteritems():
        if not isinstance(v, dict):
            existing_dict[k] = v
        else:
            adder(v, existing_dict)
    return existing_dict
In [47]: adder(my_dict, existing_dict)
Out[47]: 
{'first': 'John',
 'last': 'Doe',
 'occupation': 'Web Developer',
 'role': 'employee',
 'username': 'myEmail@email.com'}
| 归档时间: | 
 | 
| 查看次数: | 4775 次 | 
| 最近记录: |