Seite 1 von 1

Key von Dict auslesen

Verfasst: Freitag 17. August 2018, 10:11
von Axel_S
Hallo,

ich lese einen struct aus Matlab ein und habe mich dabei an die Anleitung von https://docs.scipy.org/doc/scipy/refere ... al/io.html gehalten.
Jetzt habe ich nur eine Frage:

Der dort dargestellte Code ist

Code: Alles auswählen

>>> mat_contents = sio.loadmat('octave_struct.mat')
>>> mat_contents
{'my_struct': array([[([[1.0]], [[2.0]])]],
      dtype=[('field1', 'O'), ('field2', 'O')]), '__version__': '1.0', '__header__': 'MATLAB 5.0 MAT-file, written by Octave 3.6.3, 2013-02-17 21:23:14 UTC', '__globals__': []}
>>> oct_struct = mat_contents['my_struct']
Problem bei mir ist, dass sich der Name des Matlabstrukts ändert. Dieser ist in dem Beispiel oben my_struct.
Wenn man sich mat_contents anzeigen lässt, wird dieser ja auch gelistet. Aber wie greife ich darauf zu, um in der Zeile

Code: Alles auswählen

>>> oct_struct = mat_contents['my_struct']
das my_struct durch eine Variable zu ersetzen?

Vielen Dank und liebe Grüße,
Axel

Re: Key von Dict auslesen

Verfasst: Freitag 17. August 2018, 10:20
von Sirius3
@Axel_S: mat_contents ist ein ganz normales Wörterbuch. Du mußt einfach die Schlüssel mit doppelten Unterstrichen ausfiltern.

Re: Key von Dict auslesen

Verfasst: Freitag 17. August 2018, 10:23
von __blackjack__
@Axel_S: Wörterbücher (`dict`) haben Methoden um sich Schlüssel, Werte, oder sogar beides geben zu lassen: https://docs.python.org/2/tutorial/data ... ctionaries

Re: Key von Dict auslesen

Verfasst: Freitag 17. August 2018, 12:09
von Axel_S
Hi,

durch den vorgeschlagegen Link, bin ich auf die Lösung gestoßen. Danke dafür. Dieser befand sich aber im Detail auf der Seite https://stackoverflow.com/questions/185 ... in-python3.

Vielen Dank und liebe Grüße,
Axel

Re: Key von Dict auslesen

Verfasst: Freitag 17. August 2018, 12:31
von Sirius3
@Axel_S: ich wüßte jetzt nicht, wie der von Dir verlinkte Beitrag Dein Problem löst.

Code: Alles auswählen

key = next(key for key in mat_contents if not key.startswith('__'))
oct_struct = mat_contents[key]