2017-02-09 9 views
0

Я пытаюсь напечатать несколько словарей на отдельных строках, которые содержат одни и те же ключи, но разные значения каждый раз. Значения могут быть разными в том смысле, что каждый раз, когда словарь печатается, он может казаться грязным; потому что ключи находятся в разных местах каждый раз. Например:Как печатать словарь с ключами в одинаковых столбцах каждый раз?

{0: 10, 1: 5, 2: 2, 3: 4, 4: 1, 5: 1, 6: 0, 7: 0, 8: 0, 9: 0, 10: 1} 
{0: 309, 1: 156, 2: 76, 3: 36, 4: 22, 5: 6, 6: 4, 7: 5, 8: 1, 9: 0, 10: 1} 
{0: 478, 1: 216, 2: 125, 3: 57, 4: 37, 5: 9, 6: 2, 7: 2, 8: 2, 9: 0, 10: 1} 
{0: 1287, 1: 717, 2: 332, 3: 165, 4: 94, 5: 26, 6: 15, 7: 9, 8: 8, 9: 4, 10: 1} 
{0: 104, 1: 53, 2: 24, 3: 17, 4: 6, 5: 4, 6: 0, 7: 1, 8: 0, 9: 1, 10: 1} 

Как я могу печатать словари таким образом, что ключи будут находиться в той же колонке, каждый раз словарь напечатан? Таким образом, словарь будет иметь одинаковую длину каждый раз и в результате будет выглядеть более аккуратным.

ответ

1

Один из способов - изучить интерфейс данных, например PANDAS, чтобы вы могли отбросить значения в помеченные столбцы. Вероятно, это лучший способ.

Если вам нужно сделать это на Python со своим собственным кодированием, я предлагаю вам написать довольно-принтер, который берет каждый элемент в порядке, распечатывает его в хорошо отформатированном столбце (например, ведет с символом \ t) , и добавляет фигурные скобки грубой силой. Например:

print '{', 
for key in range(key_min, key_max+1): 
    print key, ':', dict[key], ',\t', 
print '}' 

Это один ряд. Это удовлетворительно? Вы также можете использовать formatted print для всей линии; Я не уверен, сколько времени вы хотите потратить на обучение форматированию вывода.

+0

Привет. Я последовал твоему предложению фрейма данных Panda. Результат выглядит великолепно. –

2

С dict не упорядочены по своему характеру, вы не можете распечатать упорядоченный контент. Для этого вы можете отсортировать содержимое dict на основе ключей и сгенерировать строку, похожую на repr словаря. Например:

for item in my_list: 
    print('{%s}' % ', '.join('%s: %s' % (k, v) for k, v in sorted(item.items()))) 

# which prints: 
# {0: 10, 1: 5, 2: 2, 3: 4, 4: 1, 5: 1, 6: 0, 7: 0, 8: 0, 9: 0, 10: 1} 
# {0: 309, 1: 156, 2: 76, 3: 36, 4: 22, 5: 6, 6: 4, 7: 5, 8: 1, 9: 0, 10: 1} 
# {0: 478, 1: 216, 2: 125, 3: 57, 4: 37, 5: 9, 6: 2, 7: 2, 8: 2, 9: 0, 10: 1} 
# {0: 1287, 1: 717, 2: 332, 3: 165, 4: 94, 5: 26, 6: 15, 7: 9, 8: 8, 9: 4, 10: 1} 
# {0: 104, 1: 53, 2: 24, 3: 17, 4: 6, 5: 4, 6: 0, 7: 1, 8: 0, 9: 1, 10: 1} 

где my_list список dict как:

my_list = [{0: 10, 1: 5, 2: 2, 3: 4, 4: 1, 5: 1, 6: 0, 7: 0, 8: 0, 9: 0, 10: 1}, 
      {0: 309, 1: 156, 2: 76, 3: 36, 4: 22, 5: 6, 6: 4, 7: 5, 8: 1, 9: 0, 10: 1}, 
      {0: 478, 1: 216, 2: 125, 3: 57, 4: 37, 5: 9, 6: 2, 7: 2, 8: 2, 9: 0, 10: 1}, 
      {0: 1287, 1: 717, 2: 332, 3: 165, 4: 94, 5: 26, 6: 15, 7: 9, 8: 8, 9: 4, 10: 1}, 
      {0: 104, 1: 53, 2: 24, 3: 17, 4: 6, 5: 4, 6: 0, 7: 1, 8: 0, 9: 1, 10: 1} 
      ] 

 Смежные вопросы

  • Нет связанных вопросов^_^