Python formatando grandes valores

Abaixo é o código para formatar um valor x que eu tenho usad

Exemplos do que faz:

Formata 7.500.000 em 7,5 M

Formata 800.000 em 800 K It

def Formatting(self, x, pos):
    formats = ((1e-12,'%d%s T','%1.1f T'),
               (1e-9, '%d%s B','%1.1f B'),
               (1e-6, '%d%s M','%1.1f M'),
               (1e-3, '%d%s k','%1.1f K'  ))

    for i, (N, A, B) in enumerate(formats):
        if abs(x) > (1./N):
            result = ''
            x = x * N

            if abs(x) >= 1000:
                x, r = divmod(x, 1000)
                result = ",%03d%s" % (r, result)
                return A % (x, result)

            else: return B % (x)


        elif 1   <= abs(x) < 1e3: return '%1.0f' % (x)
        elif 0.1 <= abs(x) < 1:   return '%1.1f' % (x)
        elif 0   <  abs(x) < 0.1: return '%1.3f' % (x)
        elif x == 0:              return '%1.0f' % (x)

Agora, tenho lutado para fazer as seguintes melhorias:

Em vez de 550 M, eu gostaria de poder imprimir 0,55 B Em vez de 550 B, eu gostaria de poder imprimir 0,55 T Em vez de 550 K, eu gostaria de poder imprimir 0,55 M Em vez de 0,001, eu gostaria de poder imprimir .001 sem o zeroNo entanto, 55,5 M, 55,5 B, 55,5 K ainda devem ser impressos - não 0,055 M ou 0,055 B ..

Sugestões sobre como realizar essa alteração ou melhorar esse trecho de código para ter mais impressões de significado (usadas em um gráfico)?

Muito obrigado

questionAnswers(2)

yourAnswerToTheQuestion