Подтвердить что ты не робот

словарь pprint в несколько строк

Я пытаюсь получить симпатичную распечатку словаря, но мне не повезло:

>>> import pprint
>>> a = {'first': 123, 'second': 456, 'third': {1:1, 2:2}}
>>> pprint.pprint(a)
{'first': 123, 'second': 456, 'third': {1: 1, 2: 2}}

Я хотел, чтобы вывод был в несколько строк, что-то вроде этого:

{'first': 123,
 'second': 456,
 'third': {1: 1,
           2: 2}
}

Может ли pprint сделать это? Если нет, то какой модуль это делает? Я использую Python 2.7.3.

4b9b3361

Ответ 1

Используйте width=1 или width=-1:

In [33]: pprint.pprint(a, width=1)
{'first': 123,
 'second': 456,
 'third': {1: 1,
           2: 2}}

Ответ 2

Вы можете преобразовать dict в json через json.dumps(d, indent=4)

print(json.dumps(item, indent=4))
{
    "second": 456,
    "third": {
        "1": 1,
        "2": 2
    },
    "first": 123
}

Ответ 3

Если вы пытаетесь распечатать переменные среды, используйте:

pprint.pprint(dict(os.environ), width=1)

Ответ 4

Две вещи добавить к Райану Чоу уже очень полезный ответ:

  • sort_keys аргумент sort_keys для более легкого визуального контроля, особенно если вы работаете с Python до 3.6 (в котором словари не упорядочены)
print(json.dumps(item, indent=4, sort_keys=True))
"""
{
    "first": 123,
    "second": 456,
    "third": {
        "1": 1,
        "2": 2
    }
}
"""
  • dumps() будет работать только в том случае, если ключи словаря являются примитивами (strings, int и т.д.)