Перенос ключей в словарях на новую строку
На данный момент код следующий:
a = {'fields' : [1 ,2 ,3 ,4]}
b = {'items' : [['a', 's', 'd', 'f'], ['s', 'a', 'd', 'f'], ['d', 's' ,'f', 'a']]}
a_and_b = [dict(zip(a['fields'], x)) for x in b['items']]
print(a_and_b)
Результат:
[{1: 'a', 2: 's', 3: 'd', 4: 'f'}, {1: 's', 2: 'a', 3: 'd', 4: 'f'}, {1: 'd', 2: 's', 3: 'f', 4: 'a'}]
как мне из полученного результата в виде строки сделать красивые столбики:
[{1: 'a',
2: 's',
3: 'd',
4: 'f'},
{1: 's',
2: 'a',
3: 'd',
4: 'f'},
{1: 'd',
2: 's',
3: 'f',
4: 'a'}
(P.S. в реальных данных которые получаю приходят 28 ключей на каждый словарь)
Ответы (1 шт):
Автор решения: insolor
→ Ссылка
Похожий вывод дает pprint, только не будет пустых строк между отдельными словарями в списке
from pprint import pprint
a = {'fields' : [1 ,2 ,3 ,4]}
b = {'items' : [['a', 's', 'd', 'f'], ['s', 'a', 'd', 'f'], ['d', 's' ,'f', 'a']]}
a_and_b = [dict(zip(a['fields'], x)) for x in b['items']]
pprint(a_and_b, width=1)
Результат:
[{1: 'a',
2: 's',
3: 'd',
4: 'f'},
{1: 's',
2: 'a',
3: 'd',
4: 'f'},
{1: 'd',
2: 's',
3: 'f',
4: 'a'}]
Параметр width=1 нужен, чтобы pprint максимально сузил вывод, без него вывод был бы таким (значение width=80 по умолчанию, т.е. pprint будет пытаться разбить текст на отдельные строки, если он шире 80 символов):
[{1: 'a', 2: 's', 3: 'd', 4: 'f'},
{1: 's', 2: 'a', 3: 'd', 4: 'f'},
{1: 'd', 2: 's', 3: 'f', 4: 'a'}]