2017-07-18 1 views
0

J'ai ce dictionnaire;Formatage de dictionnaires python avec des lignes de rupture

results = {'name': sectionAddr.name, 
       'count': sampleCount, 
       'finish_count': len(finished), 
       'inside4_count': inside4Count, 
       'inside10_count': inside10Count, 
       'finish_rate': 100 * len(finished)/sampleCount, 
       'inside4_rate': 100 * inside4Count/sampleCount, 
       'inside10_rate': 100 * inside10Count/sampleCount, 
       'mean_error': meanError, 
       'stddev_error': stddevError, 
       'samples': sampleResults} 
    results['error'] = getError(results 

Mais j'ai besoin de l'afficher; et si je fais cela par le formatage à str, cela ressemble à une chaîne, c'est-à-dire une ligne. Comment je devrais casser la ligne après chaque variable?

Quelque chose comme ça:

results = {'name': sectionAddr.name + '\n', 
'finish_count': len(finished), ... 

ne fonctionne pas,

comment je peux briser les lignes?

+3

Ceci est un dictionnaire , pas un ensemble. Je suppose que vous ne voulez pas un ensemble à tout moment et c'est juste une erreur? –

Répondre

1

Une jolie impression répondrait probablement à vos besoins;

import pprint 
pprint.pprint(result) 

Si vous ne souhaitez pas utiliser de jolis caractères d'impression;

result = {'a': '1', 
      'b': '2', 
      'c': '3'} 

print('\n'.join('\t'.join((key, result[key])) for key in result)) 

Sorties;

a 1 
c 3 
b 2 
+0

Exatly que j'ai besoin, mais il y a une erreur: 'TypeError: les index de liste doivent être des entiers ou des tranches, pas dict' –

1

Vous pouvez utiliser pprint.pformat pour obtenir une chaîne bien formaté:

import pprint 

results = {'name': "sectionAddr.name", 
       'count': "sampleCount", 
       'finish_count': "len(finished)", 
       'inside4_count': "inside4Count", 
       'inside10_count': "inside10Count", 
       'samples': "sampleResults"} 

s = pprint.pformat(results) 

print(s) 

Sortie:

{'count': 'sampleCount', 
'finish_count': 'len(finished)', 
'inside10_count': 'inside10Count', 
'inside4_count': 'inside4Count', 
'name': 'sectionAddr.name', 
'samples': 'sampleResults'} 

Ou, si vous n'avez pas besoin comme une chaîne, mais souhaitez imprimer la console directement, vous pouvez utiliser pprint.pprint:

pprint.pprint(results) 

Notez qu'un dictionnaire n'a pas d'ordre fixe, donc les clés de la chaîne formatée peuvent être dans un ordre différent.

Les deux pformat et pprint accepter des paramètres supplémentaires, de sorte que vous pouvez modifier le résultat: docs

+0

merci, mais si je veux l'écrire dans un fichier? ce sera la ligne, comment ajouter le '\ n'? –

+0

@ E.Trofimov avez-vous essayé d'écrire la chaîne formatée '' pformat'' dans un fichier? –

+0

il y a un fichier html –

0

Python Jolie Documentation de l'imprimante

>>> import pprint 
>>> tup = ('spam', ('eggs', ('lumberjack', ('knights', ('ni', ('dead', 
... ('parrot', ('fresh fruit',)))))))) 
>>> stuff = ['a' * 10, tup, ['a' * 30, 'b' * 30], ['c' * 20, 'd' * 20]] 
>>> pprint.pprint(stuff) 
['aaaaaaaaaa', 
('spam', 
    ('eggs', 
    ('lumberjack', 
    ('knights', ('ni', ('dead', ('parrot', ('fresh fruit',)))))))), 
['aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb'], 
['cccccccccccccccccccc', 'dddddddddddddddddddd']] 

Votre cas d'utilisation:

import pprint 
pprint.pprint(results)