連想配列を条件分岐で使う
私がプログラミングを学び始めた当初、連想配列の使い所が分かりませんでした。
現在もまだあまりわかっていませんが、連想配列の使い所の参考になれば嬉しいです。
連想配列とは
連想配列とは、キーとそのキーに対応した値を格納した配列のことです。
言語によっては「辞書」とも呼ばれます。
通常の配列では、値を取り出す時はインデックスを使いますが、連想配列ではキーと呼ばれるものを使います。
詳しくは以下のサイトを参考にしてください。
例えば、次のような宣言をしたとします。(以下、Pythonで書きます。)
dict = {"リンゴ" : 100, "キャベツ" : 150}
配列と違い宣言には、{ }を使います。(通常の配列は[ ]を使う言語が多いと感じます)
そして、キーから値を取り出すには次のようにします。
apple_price = dict["リンゴ"] #apple_priceには100が格納されます kyabetsu_price = dict["キャベツ"] #kyabetsu_priceには150が格納されます
では、本題に移ります。
制御構文(if, Switchなど)での条件分岐
連想配列を条件分岐で使う利点はコードがシンプルで読みやすくなること(可読性向上)と、条件を追加しやすくなること(拡張性、保守性向上)です。
例えば、食物を買おうとする客が1000円出した際に、そのお釣りを求め表示したいとしましょう。
そうするとif
で書くと一例として次のようになると思います。
food = input() #input()は標準入力の関数 ここでは「リンゴ」や「キャベツ」など商品名を入力するとする oturi = 1000 if food == "リンゴ": oturi = oturi - 100 elif food == "キャベツ" oturi = oturi - 150 print(oturi)
これを連想配列で書くと
name2price = { #食品名と値段の対応表 "リンゴ" : 100, "キャベツ" : 150 } food = input() #input()は標準入力の関数 ここでは「リンゴ」や「キャベツ」など商品名を入力するとする oturi = 1000 oturi = oturi - name2price[food] print(oturi)
となります。 2つくらいであればまだifやswitchで書けるのですが、数が多くなってくると大変なことになります。
ここから2つ増やすだけでも
#ifの場合 food = input() #input()は標準入力の関数 ここでは「リンゴ」や「キャベツ」など商品名を入力する想定 oturi = 1000 if food == "リンゴ": oturi = oturi - 100 elif food == "キャベツ": oturi = oturi - 150 elif food == "きゅうり": oturi = oturi - 50 elif food == "もやし": oturi = oturi - 10 print(oturi) #------------------------------------------ #連想配列の場合 name2price = { #食品名と値段の対応表 "リンゴ" : 100, "キャベツ" : 150, "きゅうり" : 50, "もやし" : 10, } food = input() #input()は標準入力の関数 ここでは「リンゴ」や「キャベツ」など商品名を入力するとする oturi = 1000 oturi = oturi - name2price[food] print(oturi)
となり、連想配列を使うことでコードが美しくなることがわかると思います。
以上、何かの参考になれば幸いです。
コーディングに慣れてくるまでは、とにかく動くコードを書くことが大切です。
しかし、ある程度慣れてきたら他に効率よくコーディングする方法がないか考えることがさらに大切になります。
私も常に考えてはいるのですが、まだまだなかなかうまくいかないですが...
でも焦らず頑張っていこうと思います。
ちなみに余談ですが
oturi = oturi - ○○
の箇所はすべてoturi -= ○○
という風にも書けます。