前提・実現したいこと
pythonで、最小値を求めるコードを書きたいです。
発生している問題・エラーメッセージ
地点を入力すると、予め辞書に登録されている県庁所在地のうち
最も近い地点を返してくれるプログラムを次のように書きました。
python
1pref_capitals = {(43.06417, 141.34694): "北海道(札幌)", 2 (40.82444, 140.74): "青森県(青森市)", 3 (39.70361, 141.1525): "岩手県(盛岡市)"} 4 5loc = tuple(map(float, input().split())) 6min_calc = None 7min_value = "" 8 9for key in pref_capitals.keys(): 10 calc = (key[0] - loc[0])**2 + (key[1] - loc[1])**2 11 if min_calc == None: 12 min_calc = calc 13 14 if min_calc > calc: 15 min_calc = calc 16 min_value = pref_capitals[key] 17 18print(min_value)
Pythonでは、
python
1 if min_calc == None: 2 min_calc = calc
のような断りを入れるのが自然のようなのですが、
このようにせず、同じことではあるのですが、
イテレータの最初の要素の計算を先にmin_calcに入れる
以下のようなコードを書きました。
python
1pref_capitals = {(43.06417, 141.34694): "北海道(札幌)", 2 (40.82444, 140.74): "青森県(青森市)", 3 (39.70361, 141.1525): "岩手県(盛岡市)" 4 } 5loc = (41, 141) 6min_calc = (pref_capitals.keys()[0] - loc[0])**2 + (pref_capitals.keys()[1] - loc[1])**2 7 8for key in pref_captals.keys(): 9 calc = (key[0] - loc[0])**2 + (key[1] - loc[1])**2 10 if min_calc > calc: 11 min_calc = calc 12print(min_calc)
エラー
error
1TypeError: 'dict_keys' object is not subscriptable
するとこのようなエラーが出てしまいます。
原因
原因は明らかで、辞書の中のキーであるタプルへのアクセスの仕方が間違っているのですが、
調べてもどう表現すれば良いのか見つけることができませんでした。
python
1your_dictionary[0][0]
でもダメですし、どうすれば良いのでしょう?
また、なぜdict_key型のオブジェクトは、上記のような方法で要素にアクセスできないのでしょう。
何か理由と言いますか、できるようにしなかった特別な理由などございましたら
教えていただきたいです。
よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/01 14:34