У меня есть словарь, который содержит несколько словарей (номер которых не фиксирован), которые, в свою очередь, содержат списки чисел (число списков каждого под-словаря также не является фиксированным).
Data_Dict ={0:{0:[list 00], 1:[list 01], 2:[list 02], 3:[list 03], ...},
1:{0:[list 10], 1:[list 11], 2:[list 12], 3:[list 13], ...},
2:{0:[list 20], 1:[list 21], 2:[list 22], 3:[list 23], ...},
...}
Data_Dict - это то, что я получаю при разборе данных из разных файлов, каждый из которых предоставляет информацию о разных объектах.
Ключи словарей взяты из циклов for, которые я использовал для импорта разных файлов или разных объекты (более конкретно, ключи относятся к файлам, когда значения являются словарями, в то время как ключи относятся к одному объекту, когда значения являются строками).
Я пытаюсь объединить списки с указанным ключом c всех под-словарей в одном списке. Важно, чтобы порядок сохранялся, то есть элементы списка Data_Dict [0] [0] должны предшествовать элементам списка Data_Dict [1] [0] и так далее. Здесь у вас есть желаемый результат:
NewData_Dict ={0:[list 00, list 10, list 20,...],
1:[list 01, list 11, list 21,...],
2:[list 02, list 12, list 22,...],
...}
Я пытался использовать то, что было предложено в другом вопросе ( Как я могу комбинировать словари с одинаковыми клавишами? ), что :
NewData_Dict = {}
for k in Data_Dict[0]:
NewData_Dict[k] = [d[k] for d in Data_Dict]
Что мне дает:
NewData_Dict[k] = [d[k] for d in Data_Dict]
TypeError: 'int' object is not subscriptable
Я попробовал также ответить на вопрос Объединить значения одних и тех же ключей в списке диктов :
NewData_Dict = {
k: [d.get(k) for d in Data_Dict]
for k in set().union(*Data_Dict)
}
Получение взамен:
NewData_Dict = {k: [d.get(k) for d in Data_Dict] for k in set().union(*Data_Dict)}
TypeError: 'int' object is not iterable
Я думаю, что проблема может заключаться в том, что ключи моих словарей имеют значение int. Правильно ли мое предположение? Как я могу это исправить?