Печать списков в виде табличных данных - PullRequest
275 голосов
/ 02 марта 2012

Я довольно новичок в Python, и сейчас я пытаюсь красиво отформатировать свои данные для вывода на печать.

У меня есть один список, который используется для двух заголовков, и матрица, которая должна быть содержимымТаблица.Например:

teams_list = ["Man Utd", "Man City", "T Hotspur"]
data = np.array([[1, 2, 1],
                 [0, 1, 0],
                 [2, 4, 2]])

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

Теперь я хочу представить это в виде таблицы, примерно так:

            Man Utd   Man City   T Hotspur
  Man Utd         1          0           0
 Man City         1          1           0
T Hotspur         0          1           2

У меня есть догадка, что должны быть данныеструктура для этого, но я не могу найти его.Я пытался использовать словарь и форматировать печать, я пробовал циклы for с отступом и пытался печатать как строки.

Я уверен, что должен быть очень простой способ сделать это, но явероятно, пропустил это из-за отсутствия опыта.

Ответы [ 12 ]

2 голосов
/ 02 марта 2012

Я бы попытался перебрать список и использовать форматировщик CSV для представления нужных вам данных.

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

В противном случае просто переберите список и напечатайте "\ t" после каждого элемента

http://docs.python.org/library/csv.html

1 голос
/ 20 марта 2019

Я обнаружил, что просто ищу способ вывода простых столбцов. Если вам просто нужны столбцы без суеты , то вы можете использовать это:

print("Titlex\tTitley\tTitlez")
for x, y, z in data:
    print(x, "\t", y, "\t", z)

РЕДАКТИРОВАТЬ: Я пытался быть максимально простым, и поэтому сделал некоторые вещи вручную, вместо того, чтобы использовать список команд. Чтобы обобщить актуальный вопрос ОП:

#Column headers
print("", end="\t")
for team in teams_list:
    print(" ", team, end="")
print()
# rows
for team, row in enumerate(data):
    teamlabel = teams_list[team]
    while len(teamlabel) < 9:
        teamlabel = " " + teamlabel
    print(teamlabel, end="\t")
    for entry in row:
        print(entry, end="\t")
    print()

Выходы:

          Man Utd  Man City  T Hotspur
  Man Utd       1       2       1   
 Man City       0       1       0   
T Hotspur       2       4       2   

Но это больше не кажется более простым, чем другие ответы, возможно, с той выгодой, что он не требует больше импорта. Но ответ @ campkeith уже встречал это и является более надежным, поскольку он может обрабатывать самые разные длины меток.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...