2017-07-18 1 views
0

Ich habe dieses Wörterbuch;Formatieren von Python-Wörterbüchern mit Unterbrechungszeilen

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 

Aber ich muss es anzeigen; und wenn ich das durch die Formatierung zu str mache, sieht es aus wie eine Zeichenkette, d. h. eine Zeile. Wie soll ich die Zeile nach jeder Variable abbrechen?

So etwas:

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

nicht funktioniert,

wie kann ich Linien brechen?

+3

Dies ist ein Wörterbuch ist , nicht ein Satz. Ich gehe davon aus, dass du zu keinem Zeitpunkt ein Set willst und es ist nur ein Fehler? –

Antwort

1

Ein schöner Druck würde wahrscheinlich Ihre Bedürfnisse erfüllen;

import pprint 
pprint.pprint(result) 

Wenn Sie nicht möchten, hübsche Druck verwenden;

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

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

Ausgänge;

a 1 
c 3 
b 2 
+0

Exatly, dass ich brauche, aber es gibt einen Fehler: 'TypeError: Liste Indizes müssen Ganzzahlen oder Slices sein, nicht dict' –

1

Sie pprint.pformat verwenden können, eine schön formatierte Zeichenfolge zu erhalten:

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) 

Ausgang:

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

Oder, wenn Sie es als String nicht brauchen, aber drucken möchten die Konsole direkt, können Sie pprint.pprint verwenden:

pprint.pprint(results) 

Beachten Sie, dass ein Wörterbuch keine feste Reihenfolge hat, sodass die Schlüssel in der formatierten Zeichenfolge möglicherweise in anderer Reihenfolge vorliegen.

Sowohl pformat und pprint zusätzliche Parameter übernehmen, so dass Sie das Ergebnis ändern können: docs

+0

danke, aber wenn ich es in eine Datei schreiben wollen? Es wird die Zeile sein, wie fügen Sie das '\ n' hinzu? –

+0

@ E.Trofimov haben Sie versucht, die '' format'' formatierte Zeichenfolge in eine Datei zu schreiben? –

+0

gibt es eine HTML-Datei –

0

Python Pretty Printer Dokumentation

>>> 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']] 

Ihr Anwendungsfall:

import pprint 
pprint.pprint(results)