Чтобы перейти от списка словарей, это просто:
Вы можете использовать эту форму:
DL={'a':[0,1],'b':[2,3], 'c':[4,5]}
LD=[{'a':0,'b':2, 'c':4},{'a':1,'b':3, 'c':5}]
nd={}
for d in LD:
for k,v in d.items():
try:
nd[k].append(v)
except KeyError:
nd[k]=[v]
print nd
#{'a': [0, 1], 'c': [4, 5], 'b': [2, 3]}
Или использовать defaultdict :
nd=cl.defaultdict(list)
for d in LD:
for key,val in d.items():
nd[key].append(val)
print dict(nd.items())
#{'a': [0, 1], 'c': [4, 5], 'b': [2, 3]}
Переход на другой путь проблематичен.Вам нужно иметь некоторую информацию о порядке вставки в список из ключей из словаря.Напомним, что порядок ключей в dict не обязательно совпадает с исходным порядком вставки.
Для хихиканья предположим, что порядок вставки основан на отсортированных ключах.Затем вы можете сделать это следующим образом:
nl=[]
nl_index=[]
for k in sorted(DL.keys()):
nl.append({k:[]})
nl_index.append(k)
for key,l in DL.items():
for item in l:
nl[nl_index.index(key)][key].append(item)
print nl
#[{'a': [0, 1]}, {'b': [2, 3]}, {'c': [4, 5]}]
Если ваш вопрос был основан на любопытстве, то ваш ответ есть.Если у вас есть реальные проблемы, позвольте мне предложить вам пересмотреть свои структуры данных.Ни один из них, кажется, не является очень масштабируемым решением.