Как сохранить результат функции 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'}]

Все классно и здорово, но как мне сохранить результат функции pprint в переменную? (в файл очень не хотелось бы)

Если сделать следующее:

q = pprint(a_and_b, width=1)

функция отрабатывает и выводит данные в консоль (хотя по сути мне вывод в консоль не требуется, интересует только приведение результата в читаемый вид), но в дальнейшем q = None


Ответы (1 шт):

Автор решения: gil9red

Вместо функции pprint используйте pformat:

from pprint import pformat

...

q = pformat(a_and_b, width=1)
print(q)

Я бы предложил еще вариант отобразить в json:

import json

...

print(json.dumps(a_and_b, indent=4, ensure_ascii=False))
→ Ссылка