Key von Dict auslesen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Axel_S
User
Beiträge: 4
Registriert: Freitag 9. Februar 2018, 08:19

Freitag 17. August 2018, 10:11

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
Sirius3
User
Beiträge: 8255
Registriert: Sonntag 21. Oktober 2012, 17:20

Freitag 17. August 2018, 10:20

@Axel_S: mat_contents ist ein ganz normales Wörterbuch. Du mußt einfach die Schlüssel mit doppelten Unterstrichen ausfiltern.
Benutzeravatar
__blackjack__
User
Beiträge: 1040
Registriert: Samstag 2. Juni 2018, 10:21

Freitag 17. August 2018, 10:23

@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
“Capitalism is the astounding belief that the most wickedest of men will do the most wickedest of things for the greatest good of everyone.” – John Maynard Keynes
Axel_S
User
Beiträge: 4
Registriert: Freitag 9. Februar 2018, 08:19

Freitag 17. August 2018, 12:09

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
Sirius3
User
Beiträge: 8255
Registriert: Sonntag 21. Oktober 2012, 17:20

Freitag 17. August 2018, 12:31

@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]
Antworten