간단한 플랫 목록을 중첩 목록에 복사하려고합니다. 예를 들면 다음과 같습니다.플랫 목록을 중첩 된 dict에 복사
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]
누군가 내가 여기서 잘못하고있는 것을 지적 할 수 있습니까? 나는 완전히 다른 방식으로 즐겁게 기꺼이 나아 간다. 감사.