2017-09-11 1 views
0
locale

Je suis en train de formater un ensemble d'un ensemble de nombres pour montrer que comme xxx, xxx, xxx au lieu de xxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxMise en forme en python avec

Les itère formatter sur un dictionnaire, où les valeurs sont une liste.

C'est ce qu'il ressemble à:

{'ST': [Decimal('21529992.247811'), 
Decimal('75922363.959394'), Decimal('1.688401841437798245794341100')], 
'LQT': [Decimal('23034058.811000'), Decimal('45706418.420000'), 
Decimal('0.243186493430996726476558100')], 'SR': 
[Decimal('8389288.802664'), Decimal('0393135.373964'), 
Decimal('-2.146515189191049793306943120')], 'MIS7': 
[Decimal('6382868.080000'), Decimal('5336228.320000'), 
Decimal('-4.879627090905261579809913330')], 'LQ': 
[Decimal('98508613.709000'), Decimal('38822011.125000'), 
Decimal('-3.983067033313078110002846960')] } 

Ceci est le codage incorrect que j'ai:

import locale 
    locale.setlocale(locale.LC_ALL, '') 
    for k in result.keys(): 
     if result[k] == result[k]: 
      result[k] = locale.format('%d', result[k], grouping = True) 
    if len(result) == 0: 
     result["None"] = "None" 

Ma chaîne d'erreur est longue, mais cela ressemble le bit principal:

TypeError: %d format: a number is required, not list 

Que dois-je faire? Merci

Répondre

0

Pourquoi ne pas simplement:

import locale 
    locale.setlocale(locale.LC_ALL, '') 
    for r in result: 
     for k in result[r]: 
      print locale.format('%2f', k, grouping = True) # Note there is not result[k]. Use your preferred number format instead of '%2f' 

et voici la sortie en utilisant '%2f':

23.034.058,811000 
45.706.418,420000 
0,243186 
8.389.288,802664 
393.135,373964 
-2,146515 
6.382.868,080000 
5.336.228,320000 
-4,879627 
98.508.613,709000 
38.822.011,125000 
-3,983067 
21.529.992,247811 
75.922.363,959394 
1,688402 
+0

Essayé! Voici mon erreur: "TypeError:% d format: un nombre est requis, pas str" – ifthenifthen

+0

Fonctionne bien ici. S'il vous plaît noter les changements dans mon code. PS: 'result' est votre' dict', bien sûr – floatingpurr

+0

@ifthenifthen laissez-moi savoir si cela fonctionne:) – floatingpurr