Если вас устраивает указанная общая ширина, но доллар в фиксированном столбце, возможно, отделенный от цифр, тогда вы можете просто делать то, что делали, но с 12
перед ,
.
>>> value = 324681
>>> ID = "first"
>>> change = 2.4
>>> print('{:10s} ${:12,.0f} {:10.1f}%'.format(ID,value,change))
first $ 324,681 2.4%
Если вы хотите, чтобы числа следовали сразу после $
, вы можете отформатировать его как строку без каких-либо дополнений, а затем использовать строку в описателе формата фиксированной ширины:
>>> print('{:10s} {:13s} {:10.1f}%'.format(ID ,'${:,.0f}'.format(value), change))
first $324,681 2.4%
или:
>>> print('{:10s} {:>13s} {:10.1f}%'.format(ID ,'${:,.0f}'.format(value), change))
first $324,681 2.4%
(Спецификатор ширины здесь увеличен до 13, потому что сам знак $
добавлен к 12 символам, используемым для числа.)