将列表打印为表格数据

580

我是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循环和字符串打印。

我相信一定有一种非常简单的方法来解决这个问题,但是由于缺乏经验,我可能错过了它。


2
+1,昨晚我也正在尝试做同样的事情。你只是想打印到命令行还是使用GUI模块? - HellaMad
只是在命令行打印。然而,它需要通过一个单元测试用例,因此格式非常重要。 - hjweide
3
可能是在Python中打印表格数据的重复问题。 - Ciro Santilli OurBigBook.com
1
可能是Python:漂亮打印ASCII表格?的重复问题。 - Martin Thoma
请注意,此处的要求相当专业化,因为行和列标签相同。因此,对于这种特殊情况,临时代码是如何简单实现的一个很好的例子。但其他解决方案在更通用的表格显示方面可能更好。 - nealmcb
22个回答

0

matrepr在标记矩阵方面做得很好:

from matrepr import mprint

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

mprint(data, title=False, row_labels=teams, col_labels=teams)

             Man Utd    Man City    T Hotspur
          ┌                                    ┐
  Man Utd │     1          2            1      │
 Man City │     0          1            0      │
T Hotspur │     2          4            2      │
          └                                    ┘

除了numpy数组,它还可以处理稀疏矩阵(scipy, pydata),并输出为HTML和Latex格式。

-1
list1 = [1, 2, 3]
list2 = [10, 20, 30]

l = []

for i in range(0, len(list1)):
    l.append(list1[i]), l.append(list2[i])

# print(l)

for i in range(0, len(l), 2):
    print(l[i], "", l[i + 1])

2
欢迎来到Stack Overflow。这个问题已经超过10年了,已经有19个答案,其中包括一个被接受的答案和一个得分接近1,000的备选答案。这个答案中的代码如何改进已有的内容?你确定它添加了新的东西吗?请阅读[答案]。 - Chris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接