【发布时间】:2014-03-14 04:54:51
【问题描述】:
我正在尝试将一个简单的平面列表复制到一个嵌套列表中。举个例子:
from collections import OrderedDict
simple_list = [5,6,7,8]
nested_dict = OrderedDict([('item1', 1), ('item2', OrderedDict([('item3', 2), ('item4', {'item5': 3})])), ('item6',4)])
new_nested_dict = unflatten(nested_dict, simple_list)
print new_nested_dict
>>> OrderedDict([('item1', 5), ('item2', OrderedDict([('item3', 6), ('item4', {'item5': 7})])), ('item6',8)])
从我目前的研究来看,生成器似乎是一个不错的方法。但是,在查看文档后,我仍然不完全清楚如何使用它们来实现我想要做的事情。
def unflatten(nested_items, flat_data, start=0):
if isinstance(nested_items, OrderedDict):
nested_items = nested_items.values()
idx = start
for x in nested_items:
if isinstance(x, Iterable):
for i in unflatten(x, flat_data, start=idx):
yield i
else:
idx += 1
yield flat_data[idx]
有人可以指出我在这里做错了什么吗?我也更愿意接受一种完全不同的方法。谢谢。
【问题讨论】:
标签: python dictionary nested