Вы можете использовать понимание списка:
my_dict = {('A1', 'A2'): 0.6, ('A1', 'A1'): 1, ('A2', 'A2'): 1, ('A2', 'A1'): 0.3}
table = [[[c for [d1, d2], c in my_dict.items() if f'A{i}' == d2 and f'A{b}' == d1][0]
for i in range(1, 3)] for b in range(1, 3)]
top = 'table {}'.format(' '.join(f'A{i}' for i in range(1, len(max(table, key=len))+1)))
final = '{}\n{}'.format(top, '\n'.join(f'A{i} {" ".join(map(str, a))}' for i, a in enumerate(table)))
Выход:
table A1 A2
A0 1 0.6
A1 0.3 1