[英]Expand OrderedDict with list values to a list of dictionaries
我有一個帶有值列表的 OrderedDict:
OrderedDict([('key1', ['value1', 'value2']),
('key2',
[[{'name': ['A', 'B'], 'amount': ['1', '2']}],
[{'name': ['C', 'D'], 'amount': ['3', '4']}]])])
我想將其轉換為字典列表,其中內部字典值中的列表擴展到列表中的不同字典:
[{'key1': 'value1',
'key2': [{'name': 'A', 'amount': 1}, {'name': 'B', 'amount': 2}]},
{'key1': 'value2',
'key2': [{'name': 'C', 'amount': 3}, {'name': 'D', 'amount': 4}]}]
我們可以使用zip
一起遍歷“key1”和“key2”下的值,並在迭代時使用 append 遍歷 output 列表。 此外,內部字典的值也必須一起遍歷,因此我們解壓lst[0]
的值並使用 zip 尚未構造內部字典:
out = []
for v, lst in zip(data['key1'], data['key2']):
d = {'key1': v, 'key2': []}
for tpl in zip(*lst[0].values()):
mid = {key: val for key, val in zip(lst[0], tpl)}
d['key2'].append(mid)
out.append(d)
與嵌套理解相同的代碼:
out = [{'key1': v, 'key2': [{key: val for key, val in zip(lst[0], tpl)} for tpl in zip(*lst[0].values())]} for v, lst in zip(data['key1'], data['key2'])]
Output:
[{'key1': 'value1',
'key2': [{'name': 'A', 'amount': '1'}, {'name': 'B', 'amount': '2'}]},
{'key1': 'value2',
'key2': [{'name': 'C', 'amount': '3'}, {'name': 'D', 'amount': '4'}]}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.