Я могу предложить заглянуть в pandas
.Вы можете получить хорошую таблицу из ваших данных, сначала создав два отдельных фрейма данных, а затем конкатенировать их по одному и тому же индексу.
import pandas as pd
L1 = [(10955, 'A'), (10954, 'A'), (10953, 'A'), (10952, 'AB'),
(10951, 'AB'), (10950, 'AB'), (10949, 'AB'), (10948, 'ABC')]
L2 = [(10956, 'AB'), (10955, 'AB'), (10954, 'A'), (10953, 'ABC'),
(10952, 'DEF'), (10951, 'ABC'), (10950, 'AB'), (10949, 'ABC'),
(10948, 'ABC'), (10947, 'ABCD')]
s1 = pd.DataFrame(L1, columns=["index", "L1"]).set_index("index")
s2 = pd.DataFrame(L2, columns=["index", "L2"]).set_index("index")
df = pd.concat((s1, s2), join="outer", axis=1).fillna("")
print(df)
В результате в консоли будет
L1 L2
index
10947 ABCD
10948 ABC ABC
10949 AB ABC
10950 AB AB
10951 AB ABC
10952 AB DEF
10953 A ABC
10954 A A
10955 A AB
10956 AB
.
Затем можно также сохранить таблицу в формате html и открыть ее в веб-браузере
df.to_html('out.html')
import webbrowser, os
webbrowser.open('file://' + os.path.realpath("out.html"))

Если вы используете jupyter,стандартный вывод pandas dataframe сам по себе выглядит очень хорошо.

Используя matplotlib (потому что вопрос задает его), можно построить значения изфрейм данных внутри оси, как это
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
for ind, data in np.ndenumerate(df.values):
ax.annotate(data, xy=ind[::-1])
ax.set(xticks=range(len(df.columns)), yticks =range(len(df)),
xticklabels=df.columns, yticklabels=df.index)
ax.set(xlim=(-1, len(df.columns)+1),
ylim=(-1, len(df)),
aspect=.6)
plt.show()

Кроме того, matplotlib предоставляет таблицы
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.table(cellText=df.values, rowLabels=df.index, colLabels=df.columns, loc='center')
ax.axis("off")
plt.show()
