Как использовать модуль pprint Python для красивой печати пар ключ-значение словаря, вложенных в список?

Я хотел бы распечатать каждую пару значений ключа из словарей, вложенных в список. Итак, вот с чем я работаю:

[{"updated_at":"2011/09/26 22:39:18 +0000","url":"http://diveintopython.net/http_web_services/redirects.html","annotations":[],"user":"name","shared":"yes","tags":"python,handler,opener,urllib2","readlater":"no","created_at":"2011/09/26 22:39:18 +0000","title":"11.7.\xc2\xa0Handling redirects","comments":[],"desc":""},{"updated_at":"2011/09/26 11:09:07 +0000","url":"http://www.polimex.net/sklep/index.php?page=Category&catid=7","annotations":[],"user":"name","shared":"yes","tags":"plastic,snap,buttons,clothing","readlater":"no","created_at":"2011/09/26 11:05:48 +0000","title":"Polimex - Plastic\xc2\xa0accessories","comments":[],"desc":""}]

Когда я делаю

from pprint import pprint

data = [{"updated_at":"2011/09/26 22:39:18 +0000","url":"http://diveintopython.net/http_web_services/redirects.html","annotations":[],"user":"name","shared":"yes","tags":"python,handler,opener,urllib2","readlater":"no","created_at":"2011/09/26 22:39:18 +0000","title":"11.7.\xc2\xa0Handling redirects","comments":[],"desc":""},{"updated_at":"2011/09/26 11:09:07 +0000","url":"http://www.polimex.net/sklep/index.php?page=Category&catid=7","annotations":[],"user":"name","shared":"yes","tags":"plastic,snap,buttons,clothing","readlater":"no","created_at":"2011/09/26 11:05:48 +0000","title":"Polimex - Plastic\xc2\xa0accessories","comments":[],"desc":""}]

pprint(data)

результат, который я получаю, такой же, как исходный список, но в строке

'[{"updated_at":"2011/09/26 22:39:18 +0000","url":"http://diveintopython.net/http_web_services/redirects.html","annotations":[],"user":"name","shared":"yes","tags":"python,handler,opener,urllib2","readlater":"no","created_at":"2011/09/26 22:39:18 +0000","title":"11.7.\xc2\xa0Handling redirects","comments":[],"desc":""},{"updated_at":"2011/09/26 11:09:07 +0000","url":"http://www.polimex.net/sklep/index.php?page=Category&catid=7","annotations":[],"user":"name","shared":"yes","tags":"plastic,snap,buttons,clothing","readlater":"no","created_at":"2011/09/26 11:05:48 +0000","title":"Polimex - Plastic\xc2\xa0accessories","comments":[],"desc":""}]'

Как сделать так, чтобы данные выглядели примерно так?

[
    {
     "updated_at":"2011/09/26 22:39:18 +0000",
     "url":"http://diveintopython.net/http_web_services/redirects.html",
     "annotations":[],
     "user":"name",
     "shared":"yes",
     "tags":"python,handler,opener,urllib2",
     "readlater":"no",
     "created_at":"2011/09/26 22:39:18 +0000",
     "title":"11.7.\xc2\xa0Handling redirects",
     "comments":[],
     "desc":""
     },
     {
     "updated_at":"2011/09/26 11:09:07 +0000",
     "url":"http://www.polimex.net/sklep/index.php?page=Category&catid=7",
     "annotations":[],
     "user":"name",
     "shared":"yes",
     "tags":"plastic,snap,buttons,clothing",
     "readlater":"no",
     "created_at":"2011/09/26 11:05:48 +0000", 
     "title":"Polimex - Plastic\xc2\xa0accessories", 
     "comments":[],"desc":"" 
     }
]

person Community    schedule 27.09.2011    source источник
comment
Я только что попробовал это из интерактивной оболочки (буквально вставил ваш код выше) и получил ожидаемый результат. Я не могу понять, как вы получаете строку от pprint, так как она возвращает None.   -  person Marcelo Cantos    schedule 28.09.2011
comment
Я напортачил. Я забыл, что список data был заключен в кавычки. Я сожалею об этой ошибке. Когда я убираю кавычки, он печатается, как и ожидалось.   -  person    schedule 28.09.2011


Ответы (2)


На ум приходит один вариант. Вы предоставляете строку JSON для pprint? Если это так, вы должны сначала расшифровать его:

pprint(json.loads(data))
person Marcelo Cantos    schedule 27.09.2011
comment
Марсело, ты угадал. Список был завернут в строку. Спасибо. Я не знал о модуле JSON и собирался вручную написать функцию для удаления кавычек и преобразования в юникод. - person ; 28.09.2011

Это... мне подходит. (Я вырезал и вставил ваш пример!) Какой Python и ОС вы используете? А вы уверены, что случайно не добавили где-то дополнительные цитаты?

Вы печатаете на терминал?

person Dave    schedule 27.09.2011
comment
Возможно, это был скорее комментарий, чем ответ, но что там еще. - person Dave; 28.09.2011
comment
Дэйв, я ошибся. У меня был список заключен в кавычки. Не понял. Извиняюсь. - person ; 28.09.2011