我有一個帶有值串列的 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}]}]
uj5u.com熱心網友回復:
我們可以使用zip一起遍歷“key1”和“key2”下的值,并在迭代時附加到輸出串列。此外,內部 dict 的值也必須一起遍歷,因此我們解壓縮 的值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'])]
輸出:
[{'key1': 'value1',
'key2': [{'name': 'A', 'amount': '1'}, {'name': 'B', 'amount': '2'}]},
{'key1': 'value2',
'key2': [{'name': 'C', 'amount': '3'}, {'name': 'D', 'amount': '4'}]}]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/444691.html
上一篇:試圖創建一個字典,而不是多個(仍然卡住但有一些澄清)
下一篇:根據字典的鍵表示不同型別的字典
