Хорошо, тогда хорошо.Понимание списка должно выполняться в этом случае:
output = [dict(zip(link_vars.values(),i)) for i in zip(*y.values())]
print(output)
Возвращает:
[{'AAA': 1, 'BBB': 4, 'CCC': 7},
{'AAA': 2, 'BBB': 5, 'CCC': 8},
{'AAA': 3, 'BBB': 6, 'CCC': 9}]
Принимая во внимание комментарий jpps, возможно, более подходящим подходом было бы сначала убедиться, чтомы получим правильные значения, объединив эти данные.
temp_d = {v:y.get(k) for k,v in link_vars.items()}
output = [dict(zip(temp_d.keys(),i)) for i in zip(*temp_d.values())]
Или использование библиотеки панд может быть излишним, но синтаксис легко понять, так как нам нужно только объединить эти слова и обработатьоставайтесь с to_dict()
func.
import pandas as pd
output = pd.DataFrame({v:y.get(k) for k,v in link_vars.items()}).to_dict('r')
Пояснение
Ключевая идея здесь - сжать значения y.Это сделано с zip(*y.values())
.И запуск понимания списка: [i for i in zip(*y.values())]
, что равняется [(7, 4, 1), (8, 5, 2), (9, 6, 3)]
, оставшаяся часть состоит в том, чтобы сжать каждый компонент с помощью AAA,BBB,CCC
.