2016-06-17 7 views
2

Ich konnte diese Frage in ein paar Suchen nicht finden. Betrachten Sie die folgende MATLAB Struktur:MATLAB-style terminal-Ausgabe in Python

>> s = struct('field_a', 1:10, 'field_b', 1:1000); 
>> disp(s) 
s = 
    field_a: [1 2 3 4 5 6 7 8 9 10] 
    field_b: [1x1000 double] 

In einem Python-Wörterbuch (ignorieren die Unterschiede +1), könnte es sein:

>>> d = {'field_a': np.arange(10), 'field_b': np.arange(1000)} 
>>> print(d) 
    <<floods terminal with output>> 

Ist es möglich, Python zu bekommen auszudrucken etwas wie:

>>> print(d) 
{'field_b': array([1, 2, ..., 998, 999]), 'field_a': array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])} 

Ich würde nicht unbedingt wollen, dass dies auf numpy Datentypen beschränkt ist, aber jedes Multi-Element-Element, das unhandlich werden kann. Und natürlich möchte ich bei Bedarf jederzeit alle Werte einsehen können.

+0

Nicht sicher, ob Sie 'print' überladen sollten, aber ich nehme an, man könnte' myprint' erstellen und leicht Situationen erfassen, in denen Sie vom Druckverhalten abweichen möchten (und ansonsten nur drucken). –

+1

['pprint'] (https://docs.python.org/3/library/pprint.html) könnte etwas Ähnliches tun, und natürlich könnte eine MATLAB-ähnliche Umgebung wie 'ipython' mehr sein nach Ihrem Geschmack als die einfache interaktive Python-Shell. –

Antwort

0

Ja, es ist möglich. Alles, was Sie tun müssen, ist die Klasse dict zu untergliedern und bieten Sie Ihre benutzerdefinierte Implementierung der __str__() Methode.

Verwandte Themen