🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

2回答

334閲覧

dict型の値を対応する変数へ格納したいです。

onakasuita

総合スコア7

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2019/11/13 07:05

編集2019/11/13 07:17

前提・実現したいこと

dict型の値を対応する変数へ格納したいです。
Amazon Rekognitionから取得している各項目の値を、それぞれの変数に格納したいと思っています。
詳しくは「該当のソースコード」に記載してます。

よろしくお願いいたします。

該当のソースコード

Python

1import sys 2import cv2 3import numpy as np 4import time 5import pyautogui 6import boto3 7 8#一部省略 9 10while True: 11 12 emoemo = rekognition.detect_faces(Image={'Bytes':buf.tobytes()}, Attributes=['ALL'])#AWSからDict型で値を取得 13 14 for face in emoemo['FaceDetails']: 15 smile = face['Smile']['Value'] 16 emothions = face['Emotions'] 17 18 happy = emothions['Happy']['Confidence'] 19 20 print(emothions)

Amazon Rekognitionから帰ってくる値(dict型)

Emotions

1[ 2 {'Type': 'FEAR', 'Confidence': 5.205546855926514}, 3 {'Type': 'HAPPY', 'Confidence': 0.2108129858970642}, 4 {'Type': 'SAD', 'Confidence': 1.6611015796661377}, 5 {'Type': 'ANGRY', 'Confidence': 3.809321403503418}, 6 {'Type': 'CALM', 'Confidence': 7.153115272521973}, 7 {'Type': 'DISGUSTED', 'Confidence': 8.615782737731934}, 8 {'Type': 'SURPRISED', 'Confidence': 6.202803134918213}, 9 {'Type': 'CONFUSED', 'Confidence': 67.14151763916016} 10]

このような感じで'Type'には感情の文字列、'Confidence'には値が入っており、
それが8個 emothionsに入っている状態です。

これを、 'Type' : 'HAPPY' であれば、変数happy へ 'Confidence'の値を格納するようなものを作りたいです。

エラー

Python

1happy = emothions['Happy']['Confidence']

とすると

TypeError: list indices must be integers or slices, not str

とでるので、そもそも自分のとっている方法が間違っているのだと思います...

補足情報(FW/ツールのバージョンなど)

Python 3.7
boto3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LouiS0616

2019/11/13 07:12

> 'Confidence'の整数 重箱の隅で恐縮ですが、整数ではないですよね。
onakasuita

2019/11/13 07:17

ごめんなさい!まだよくわかっていなくて... 「浮動小数点」でしょうか?
LouiS0616

2019/11/13 07:21

浮動小数点数とか、小数とかで充分通じると思います。値という表現も可でしょう。 プログラミングでも数学でも、整数と言ったら普通は 42 とか -6 とか、記述に小数点を要しない数を指します。
onakasuita

2019/11/13 07:22

なるほど!ご指導ありがとうございます! 以後気を気をつけます!
guest

回答2

0

Amazon Rekognitionから帰ってくる値は、dict型ではありません。dict型の配列です。

dict型だと誤解しているために、問題が生じているのです。

「 'Type' : 'HAPPY' であれば、変数happy へ 'Confidence'の整数を格納するようなものを作りたい」のであれば、以下のような感じのコードになるのではないでしょうか(コードの動作確認していないので、バグが入っているかもしれません)

happy = "" #結果が入るところ。空文字列に初期化しておく。 For i in range(len(emotion)): #dictの配列 emotion の中を順に調べてゆくForループ if emotion[i]['type'] == ’HAPPY' : # i番目のdictで'type'をキーにして得た値が'HAPPY'ならば happy = emotion[i]['Confidence'] #同じdictで'Confidence'をキーにして、Confidenceの値を得て、変数happyに代入する

『変数happy へ 'Confidence'の整数を格納するようなものを作りたいです』の整数を得る方法が判りませんでした。

{'Type': 'HAPPY', 'Confidence': 0.2108129858970642}

というdictから、'Confidence'をキーにして得られるのは、0.2108129858970642という実数。
これを小数点以下一位の数字を四捨五入して、0という整数をhappyに代入したいのですか?

投稿2019/11/13 07:34

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

onakasuita

2019/11/13 07:43

ご回答ありがとうございます! 算数の知識がカスゴミレベルで、間違った言葉を使っておりました...申し訳ありません。 'Confidence'の値はそのまま数字として格納できれば大丈夫なイメージです...
onakasuita

2019/11/13 14:41

誠にありがとうございます!!!無事に動きました!
guest

0

ベストアンサー

Emotionsがkey-valueの配列になっているので、最初の要素に数字のインデックスが必要です。毎回走査してしまいますが、例えば次のようにすればやりたいことはできるかもしれません。

python

1for emotion in emotions: 2 if emotion['Type'] == 'HAPPY': 3 happy = emothion['Confidence']

投稿2019/11/13 07:09

tachikoma

総合スコア3601

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

onakasuita

2019/11/13 07:45

ご回答ありがとうございます! ちょっといま作業できない状態なので、時間ができたら試させていただきたいと思います! また後ほど結果をご連絡させていただければ!
onakasuita

2019/11/13 14:40

無事に動きました誠にありがとうございます!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問