質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.47%
Python 3.x

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

Python

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

Q&A

解決済

3回答

22791閲覧

python 辞書から一斉に特定の値を取り出す方法

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

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

Python

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

0グッド

1クリップ

投稿2016/12/28 07:36

何時間か格闘していたのですが、どうしてもわからないので質問させて頂きました
とりあえずコードを見てもらった方が早いと思うのでので書いていきます

###該当のソースコード

python3

1party={} 2 3party["メガニウム"]={ 4"lv":50,"personality":"しんちょう","item":"たべのこし", 5"個体値":{ 6"HP":31 ,"こうげき":0,"ぼうぎょ":31,"とくこう":31,"とくぼう":31,"すばやさ":31, 7}, 8"努力値":{ 9"HP":252,"こうげき":0,"ぼうぎょ":0,"とくこう":0,"とくぼう":252,"すばやさ":4, 10 } 11} 12 13party["バクフーン"]={ 14"lv":50,"personality":"おくびょう","item":"こだわりスカーフ", 15"個体値":{ 16"HP":31 ,"こうげき":0,"ぼうぎょ":31,"とくこう":31,"とくぼう":31,"すばやさ":31, 17}, 18"努力値":{ 19"HP":4,"こうげき":0,"ぼうぎょ":0,"とくこう":252,"とくぼう":0,"すばやさ":252, 20 } 21} 22 23party["オーダイル"]={ 24"lv":50,"personality":"いじっぱり","item":"いのちのたま", 25"個体値":{ 26"HP":32 ,"こうげき":31,"ぼうぎょ":31,"とくこう":31,"とくぼう":31,"すばやさ":31, 27}, 28"努力値":{ 29"HP":4,"こうげき":260,"ぼうぎょ":0,"とくこう":0,"とくぼう":0,"すばやさ":252, 30 } 31} 32

###前提・実現したいこと
ここから最終的にメガニウム、バクフーン、オーダイル
の個体値の値を全て抽出したいのです
一つ一つ抽出するのではなく一斉にです

###試したこと
そこで私は以下のようなコードを試してみました

for x in party: for z in party[x]["個体値"]: print(z)

しかし困ったことに、抽出されるのは、個体値のキーの部分のみ
実行結果はこんな感じになってます↓

HP
すばやさ
とくぼう
とくこう
こうげき
ぼうぎょ
HP
すばやさ
とくぼう
とくこう
こうげき
ぼうぎょ

例えば、

print(party["オーダイル"]["個体値"]

とすれば実行結果はこんな感じになります↓

{"とくぼう":31,"ぼうぎょ":31,"HP":32,"とくこう":31,"こうげき":31,"すばやさ":31}

これはちゃんとキーと値の両方が抽出されるので、私の想像では、上のfor文もこれが3つ並ぶと思っていたのですが、何故キーの部分しか抽出されないのでしょうか

キーしか抽出されないので、ここからどう値を取り出そうとしてもやはりエラーになってしまいます

上のfor文は何故キーしか抽出されないのか、
また個体値の値全てを取り出すいい方法はないのか
そのあたりわかる方いらしたらお願いします...
###補足情報(言語/FW/ツール等のバージョンなど)
python 3.5.2

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

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

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

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

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

guest

回答3

0

ベストアンサー

これでどうでしょう?

Python

1for x in party: 2 for key,value in party[x]["個体値"].items(): 3 print(key, value)

投稿2016/12/28 09:01

shimizukawa

総合スコア1847

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

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

退会済みユーザー

退会済みユーザー

2016/12/29 10:07

こういう仕方もあるんですね! 私が解決策で登校した仕方だと、if文の判定の仕方がわからなく、困っていたところです 此方のコードを参考に試してみたところ、if文による判定もすることが出来て、問題解決しました また何かありましたらお願いしますね
guest

0

python

1for x in party: 2 print(x) 3 for z in party[x]["個体値"]: 4 print(z) 5 print(party[x]["個体値"][z])

puroko3さんが初めのfor文でかかれているように、dictionaryをforにいれるとkeyが取得されます。
これはprint(x)をしてやると分かります。
そのため、個体値dictionaryの中の値を取得したい場合はparty[x]["個体値"][z]とやって取得することになります。

また他の取得方法としては下のリンクにあるようにvaluesという値のリストオブジェクトを取得する方法がおすすめです。
http://www.pythonweb.jp/tutorial/dictionary/index8.html
これ使うと下のような感じかな

python

1------example-1------ 2for x in party: 3 print(x) 4 for z in party[x]["個体値"].values(): 5 print(z) 6 7------example-2------- 8for x in party: 9 print(x) 10 print(list(party[x]["個体値"].values()))

投稿2016/12/28 08:32

JapaneseRobot

総合スコア13

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

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

退会済みユーザー

退会済みユーザー

2016/12/29 10:04

なるほど!ありがとうございます 私が解決方法で投稿したvaluesで取得したものだと別の弊害が出ていた困っていたところです 何故キーしか取得されないのかもわかり、スッキリしました また機会があればお願いします!
guest

0

質問した後に思いついたことを試してみたら取り出すことが出来ました

以下ソースコードになります

for x in party: print(party[x]["個体値"].values())

見てくださった方ありがとうございました!

投稿2016/12/28 08:16

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問