2016-06-17 2 views
2

Я не смог найти этот вопрос в нескольких поисках. Рассмотрим следующую MATLAB-структуру:Выход терминала MATLAB в 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] 

В словаре питона (игнорировать +1 различия), это может быть:

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

Можно ли получить питона напечатать что-то вроде:

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

Я бы не хотел, чтобы это ограничивалось численными типами данных, но любой элемент с несколькими элементами, который может стать громоздким. И, очевидно, я хотел бы в любое время проверить все значения, если это необходимо.

+0

Не уверен, нужно ли перегружать 'print', но я предполагаю, что можно создать' myprint' и легко поймать некоторые ситуации, в которых вы хотите отклоняться от того, как ведет себя печать (и в противном случае просто вызывать печать). –

+1

['pprint'] (https://docs.python.org/3/library/pprint.html) может сделать что-то подобное, и, конечно же, с помощью среды, подобной MATLAB, такой как' ipython', может быть больше на ваш вкус, чем простая интерактивная оболочка python. –

ответ

0

Да, это возможно. Все, что вам нужно сделать, - это подклассы класса dict и предоставить вашу собственную реализацию метода __str__().

Смежные вопросы