如何才能在python中实现动态宽度对齐输出

我知道格式化指定宽度对齐输出的方式是这样子的。但是我想知道,如何才能动态指定这些宽度,我的宽度是不固定的
{:<18}{:<40}{:<57}{:<57}{:<47}

就比如我现在要输出两张表

第一张表

姓名 成绩
小明 38.9
红 99.6

第二张表

姓名 成绩
阿普杜拉三世 19
巴勃罗迭戈荷瑟山迪亚哥弗朗西斯科 88

我如何才能动态指定输出的宽度啊?要不然换了张表,我这个静态宽度指定的方式,不是太宽,就是太窄。
是要每一列都左对齐啊。


con = [18, 5792, '中华人民共和国']

for i in con:
    defWidth = f"{{:>{(len(str(i))+2)}}}"
    print(defWidth.format(i))