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

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

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

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

Q&A

解決済

2回答

1054閲覧

keys(),values()の違いについて

khayato0512

総合スコア24

Python 3.x

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

0グッド

0クリップ

投稿2019/03/23 08:48

前提・実現したいこと

今codeacademyでpythonを学習しています。
その課題が、
Create a function named add_ten that takes a dictionary with integer values named my_dictionary as a parameter. The function should add 10 to every value in my_dictionary and return my_dictionary
毎valueにプラス10をしていけという課題です。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

python3

1# Write your add_ten function here: 2def add_ten(my_dictionary): 3 for i in my_dictionary.keys(): 4 my_dictionary[i]+=10 5 return my_dictionary 6 7# Uncomment these function calls to test your function: 8print(add_ten({1:5, 2:2, 3:3})) 9# should print {1:15, 2:12, 3:13} 10#print(add_ten({10:1, 100:2, 1000:3})) 11# should print {10:11, 100:12, 1000:13} 12

試したこと

上のコードを書いてあってたのですが、書くときにfor i in my_dictionary.keys()にするか、そこを.valuesにするか迷いました。理屈がよくわかってないので,
なぜvaluesじゃだめなのか教えて欲しいです。

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

... なぜvaluesじゃだめなのか ...

毎valueにプラス10をしていくという課題です。字面だけで考えると
vakues() でよいように思ってしまうかもしれません。

ハッシュでは key は重複はありません。val は重複している可能性があります。
ハッシュの要素全体をたどっていくには keys() で すべての key を列挙していく必要があります。

イメージ説明

投稿2019/03/24 07:10

katoy

総合スコア22324

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

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

khayato0512

2019/03/24 07:14

なるほど!!dictionaryの機能について理解が深まりました! 分かりやすい説明本当にありがとうございます!
guest

0

ベストアンサー

python

1>>> d = {1:"hoge", 2:"fuga"} 2>>> list(d.keys()) 3[1, 2] 4>>> list(d.values()) 5['hoge', 'fuga'] 6>>> d[1] 7'hoge' 8>>> d["hoge"] 9Traceback (most recent call last): 10 File "<stdin>", line 1, in <module> 11KeyError: 'hoge'

添字アクセスするためには「キー」が必要なのでdict.keys()を呼び出します。

投稿2019/03/23 08:51

hayataka2049

総合スコア30933

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

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

khayato0512

2019/03/23 08:53

なるほど!!。[]で呼ぶのはkeyにしかできないのですね!ありがとうございます!
khayato0512

2019/03/23 09:06

質問させてください!例えばdというdictionaryのなかの一番目のkeyすなわち1を取り出したいときはどうすればいいですか?
hayataka2049

2019/03/24 07:18

辞書のキーに順番の概念はないので、基本的には不可能です。ただし、python3.6以降(厳密にはCPython3.6で実装依存の仕様として、Python3.7以降で公式の言語仕様として規定)では定義時・挿入時の順序が保持されることが決まっているので、それを使うならlist(d.keys())[0]といった操作で取り出せます。
hayataka2049

2019/03/24 07:19

古いバージョンのpythonと確実に互換にしたければ、キーのリストを別途作ります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問