aus dictionary filtern

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
Jan1292
User
Beiträge: 3
Registriert: Mittwoch 7. Dezember 2016, 19:19

Guten Abend zusammen,

bei meinem Projekt zur Emotionserkennung erhalte ich nach "Upload" meines Bildes folgendes dictionary als Response:

Code: Alles auswählen

{u'status': u'success', u'photos': [{u'url': u'http://api.skybiometry.com/fc/images/get?id=bmN2X3hybD0zbnEwM3M0cDhxMT0MThwOX0NjM1c3I0MW8zMDk5MiZuY3ZfZnJwZXJnPW9zODk2MXE4czAxNzQxMjlvNXA5cHJvN25yNDk5cDYyJmVxPTI3ODEmY3Z0cjZxc25uMXE2c3MmZ3Z6cmZnbnpjPTIwYxMjEzMTk1NTA4', u'width': 150, u'tags': [{u'eye_left': {u'y': 43.33, u'x': 60.0, u'confidence': 97, u'id': 449}, u'confirmed': False, u'recognizable': True, u'uids': [], u'mouth_center': {u'y': 65.33, u'x': 52.0, u'confidence': 89, u'id': 615}, u'similarities': None, u'yaw': 6, u'manual': False, u'height': 44.0, u'width': 44.0, u'points': None, u'nose': {u'y': 56.67, u'x': 49.33, u'confidence': 94, u'id': 403}, u'eye_right': {u'y': 44.67, u'x': 38.0, u'confidence': 97, u'id': 450}, u'pitch': -13, u'tid': u'TEMP_F@0c2cfc3770090a4e09462e67004a0052_14e6dfaa1d6ff_49.33_54.67_0_1', u'attributes': {u'mood': {u'confidence': 77, u'value': u'surprised'}, u'neutral_mood': {u'confidence': 21, u'value': u'false'}, u'face': {u'confidence': 70, u'value': u'true'}, u'sadness': {u'confidence': 0, u'value': u'false'}, u'disgust': {u'confidence': 10, u'value': u'false'}, u'anger': {u'confidence': 64, u'value': u'true'}, u'surprise': {u'confidence': 77, u'value': u'true'}, u'fear': {u'confidence': 0, u'value': u'false'}, u'happiness': {u'confidence': 53, u'value': u'true'}}, u'label': None, u'roll': -6, u'center': {u'y': 54.67, u'x': 49.33}}], u'pid': u'F@0c2cfc3770090a4e09462e677756223a_14e6dfaa1d6ff', u'height': 150}], u'operation_id': u'92af684c9b404321afe9010e9982badb', u'usage': {u'reset_time': 1481660595, u'used': 4, u'limit': 100, u'remaining': 96, u'reset_time_text': u'Tue, 13 December 2016 20:23:15 +0000'}}
Jetzt wäre es natürlich schön aus

Code: Alles auswählen

u'attributes': {u'mood': {u'confidence': 77, u'value': u'surprised'}
, was wir mir ja die Emotion mit der höchste Wahrscheinlichkeit ausgibt diese zu extrahieren, in diesem Fall also das "surprised".

Ich habe auch natürlich schon selber versucht das ganze irgendwie zu filtern, aber ich komm an diesen Wert nicht ran. Die keys des dictionary sind:

Code: Alles auswählen

[u'status', u'photos', u'usage', u'operation_id']
und die Emotion steckt ja in

Code: Alles auswählen

photos
, aber wie genau komm ich an ? Ist das eine Art Subkey, also wie ein mehrdimensionales Array? Ist das überhaupt so einfach, wie ich mir das gerade noch vorstelle?
BlackJack

@Jan1292: Die Emotion steckt nicht *direkt* in dem Wert zum Schlüssel 'photos'. Dieser Wert ist eine Liste. Mit einem Element zu jedem Foto. Und diese Elemente sind wieder Wörterbücher, die haben Schlüssel und Werte. Unter anderem den Schlüssel 'tags'. Der hat als Wert eine Liste. Und da sind Wörterbücher drin. Mit Schlüsseln und Werten. Ein Schlüssel ist 'attributes' und der Wert dazu ist wieder ein Wörterbuch. Das hat Schlüssel und Werte. Unter anderem den Schlüssel 'mood', was wieder ein Wörterbuch als Wert ergibt. Wenn Du also weist wie man aus einem Wörterbuch den Wert zu einem Schlüssel ermittelt und auf Elemente einer Liste zugreifen kann, dann weisst Du auch wie man an das 'surprised' kommt. Du musst die einzelnen Operationen halt nacheinander anwenden um über die Zwischenergebnisse zum gewünschten Endergebnis zu kommen.

So etwas kann man übrigens prima in einer interaktiven Python-Shell ausprobieren.
Antworten