Вывод динамического списка в таблицу

После выполнения некоторых операций у меня образуются несколько списков. Я написал код для вывода этих списков в виде таблицы.

s = ['Q:', " ".join(map(str, Q))]
data = [['TC:', " ".join(map(str, TC))], ['FC', " ".join(map(str, FC))], 
        ['VC', " ".join(map(str, VC))],['ATC'," ".join(map(str,  ATC))], 
        ['MC', " ".join(map(str, MC))]]
print(tabulate.tabulate(data, headers, tablefmt='presto')) 

Результат сейчас выводится так:

 Q:  | 0 1 2 3
---------------------+------------------
 TC: | 5 6 7 8
 FC  | 5 5 5 5
 VC  | 0 1 2 3
 ATC | None 6.0 3.5 2.6666666666666665
 MC  | None 1.0 1.0 1.0

Как исправить, чтобы выводилось так:

 Q:  | 0     |1    |2    |3
---------------------+---------------------------------
 TC: | 5     |6    |7    |8
 FC  | 5     |5    |5    |5
 VC  | 0     |1    |2    |3
 ATC | None  |6.0  |3.5  |2.6666666666666665
 MC  | None  |1.0  |1.0  |1.0

Ответы (1 шт):

Автор решения: finally

тут можно поиграться с форматными строками:

lst = [1, 2, 3, 4, 5]
line = "VALUE: |" + '|'.join([f'{value}    ' for value in lst])

результат:

VALUE: |1    |2    |3    |4    |5   

можно конечно совсем запариться и высчитывать длину каждого числа, чтоб если какое то имеет слишком большую точность то строки не поехали, но это уже на усмотрение. а так если все данные примерно равны можно просто высчитать длину отступов в пробелах и регулировать ее тут f'{value}___'

→ Ссылка