1
У меня есть большой словарь, который я печатаю для просмотра с красивым рисунком, но как я могу сохранить форматирование, но убить механизм сортировки в pprint?Отключение механизма сортировки в выводе pprint
У меня есть большой словарь, который я печатаю для просмотра с красивым рисунком, но как я могу сохранить форматирование, но убить механизм сортировки в pprint?Отключение механизма сортировки в выводе pprint
Вы можете monkey patch модуль pprint.
import pprint
pprint.pprint({"abc":1,"def":2,"ghi":3})
pprint._sorted = lambda x:x
pprint.pprint({"abc":1,"def":2,"ghi":3})
Поскольку второй выход essentiallly случайным образом отсортирован, ваш вывод может отличаться от моего:
{'abc': 1, 'def': 2, 'ghi': 3}
{'abc': 1, 'ghi': 3, 'def': 2}
import pprint
import contextlib
@contextlib.contextmanager
def pprint_nosort():
orig,pprint._sorted = pprint._sorted, lambda x:x
try:
yield
finally:
pprint._sorted = orig
# For times when you don't want sorted output
with pprint_nosort():
pprint.pprint({"abc":1,"def":2,"ghi":3})
# For times when you do want sorted output
pprint.pprint({"abc":1,"def":2,"ghi":3})
Из [документации] (https://docs.python.org/2/library/pprint.html), так как 2.5 * «Словари сортируются по ключу перед вычислением дисплея» * - нет возможности для тура Это невозможно. – jonrsharpe
* Почему вы хотите отключить сортировку? Если вы ожидаете, что словарные элементы будут в том порядке, в котором вы их разместите, вам не повезло, словари неупорядочены. –