Перенос ключей в словарях на новую строку

На данный момент код следующий:

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'}]
→ Ссылка