今回は、Listに続き、pythonで使用できる配列についてご紹介します。
その名も「dicrionary」つまりは辞書ですね。
Listとは違い、
配列の要素それぞれにキーと呼ばれるパラメータを割り当てます。
Listではただ配列の並びがあるだけで、
それぞれがどのような要素なのかについて説明を追加することはできませんでした。
例えば、
listSample=[1,4,11]
listSampleは3つ整数の要素が入った配列です。
これだけ見ても、例えば、”11″この数字が何の数字なのかはこれだけではわかりません。
しかも、この”11″という数字を使いたい場合は、
choiceParam=listSample[2]
となりますが、
この[2]の、”2″という数字自体にも意味があるようでなさそうですよね。
では、「dictionary」をpythonで使用するとどうなるか….
例も含めてご紹介していきます。
Youtubeチャンネルにさまざまな動画を上げています。
↓↓↓こちらからYoutubeチャンネルにアクセス!! ↓↓↓
↓↓↓↓これまでのPythonの記事についてはこちら↓↓↓↓
pythonでdictionaryを使う方法。
以前pythonでListを紹介したように、
このdictionaryもそんなに使い方は変わりません。
実際にdictionaryで配列を定義してみましょう。
設定としてこんな感じにしてみましょう。
あなたは果物を販売しています。 価格表をdictionaryで作成して、 果物の種類を入力したら値段を表示するプログラムをつくることにしました。
まずは3種類くらいの果物を設定してみましょう。
fluits={"apple":100,"banana":200,"strawberry":500}
dictionaryで定義する場合は、{}を使用します。
また、キーと呼ばれるパラメータ:対応したパラメータ
という組み合わせで設定します。
Listの時はただ[]で囲んで終わりでしたが、dictionaryでは{}を使うので、
ここは忘れないように気をつけましょう。
キーを選択して対応した値を取得する。
それでは、appleの値段を取得したいときはどうしたらいいでしょうか?
それは、キーを引数としてあげればいいです。
具体的には、こちらのように書きます。↓↓
fluits={"apple":100,"banana":200,"strawberry":500}
print(fluits["apple"])
こうすることで、出力結果は100と返ってきます。
Listとは違い、キーという存在があるため、
それぞれの要素を取り出す時にわかりやすくなるのがdictionaryです。
dictionaryに要素を追加する。
apple,banana,stawberryの3つの果物に加えて、
さらにorangeを追加する場合を考えましょう。
Listではappendを使用しましたが、
dictionaryではもっと簡単です。
fluits={"apple":100,"banana":200,"strawberry":500}
fluits["orange"]=150
print(fluits)
出力結果を確認するとこんな感じになります。↓↓
{'apple': 100, 'banana': 200, 'strawberry': 500, 'orange': 150}
しっかりorangeが追加されていますね。
追加したいものがある場合は、あらたなキーを引数として、=で結んであげれば完成です。
dictionaryの要素を変更する。
先ほど要素の追加を紹介しましたが、
今度は要素の変更です。例えば、bananaが価格高騰して、100円値上げした場合です。
そんな時はこうして要素の値を変更できます。↓↓
fluits={"apple":100,"banana":200,"strawberry":500}
fluits["banana"]=300
print(fluits)
出力結果はこちら↓↓
{'apple': 100, 'banana': 300, 'strawberry': 500}
ちなみに….
今回は100円の値上げなので、200+100で300に変更していますが
上げ幅だけわかっていて、元の200という値を忘れてしまうことってありますよね。
そんな時はこんな感じで上げ幅だけ書けばいいです。
fluits={"apple":100,"banana":200,"strawberry":500}
fluits["banana"]=fluits["banana"]+100 # 値上げ分追加
print(fluits)
出力結果は先ほどとまったく同じです。
dictionaryの要素を削除する方法。
さて、追加、変更と来たので後は削除ですね。
削除したいときはdelを使います。
例えば、strawberryの販売を中止するときはこんな感じです。↓↓↓
fluits={"apple":100,"banana":200,"strawberry":500}
del fluits["strawberry"]
print(fluits)
出力結果はこちら↓↓
{'apple': 100, 'banana': 200}
ちゃんとstrawberryが削除できていますね。
Listだと要素番号などを指定していましたが、
dictionaryだとキーを使うイメージですね。
dictionaryでこんなこともできる。
ここまでdictionaryの基本的な使い方について紹介しましたが、
もう少しできることのご紹介していきます。
キーは統一されたデータ型である必要はない。
どういうことかというと、
今まではキーはbananaやorangeなどstrつまり文字列でした。
ただ、複雑な配列を作りたくなった場合、
文字列以外のキーを使用したくなることもあるかもしれません。
そんな時はこんな感じで追加できます。
fluits={"apple":100,"banana":200,"strawberry":500}
fluits[10000]=300
print(fluits)
今回の例だと、intのキー10000を追加しています。
ただの例としてキーを追加したかっただけなのであまりこの数字に意味はありません….
出力結果はこのようになります。↓↓
{'apple': 100, 'banana': 200, 'strawberry': 500, 10000: 300}
しっかりエラーも出ず追加できていますね。
キーだけ、要素だけ抜き出したい場合。
dictinaryで要素数が増えてきたときや、
いまどんな要素が入ってたかな?というときに便利なのが、
こちらのキーだけ、もしくは要素だけ抜き出す方法です。
実際に抜き出してみましょう。↓↓
fluits={"apple":100,"banana":200}
print(fluits.keys()) # キーのみ抜き出す。
print(fluits.values()) # 要素のみ抜き出す。
出力結果はこちら↓↓↓
dict_keys(['apple', 'banana'])
dict_values([100, 200])
こんな感じで指定したものだけまとめて取得できていることがわかりますね。
dictionaryにはListも格納することが可能。
ちょっとここまでやる必要があるのかは別として、
それぞれの要素としてListを入れることも可能です。
何言ってるんだ…と思いましたよね?実際にやってみます。↓↓
fluits={"apple":100,"banana":200,"strawberry":500}
addList=[200,400,600]
fluits["priceAdd"]=addList
print(fluits)
addListというものを作って、priceAddというキーで格納しています。
出力結果はこちら↓↓↓
{'apple': 100, 'banana': 200, 'strawberry': 500, 'priceAdd': [200, 400, 600]}
ちゃんとListが格納されていますね。
階層が深くなってくると、要素ごとの意味が分からなくなってくるので
複雑すぎるのはちょっとやめといたほうが良いですが、できるよ。ということだけ….
dictionaryを使うメリット。
ここまでdictionaryの使い方をご紹介してきましたが、
なんとなくメリットについては気づいてもらえたのではないでしょうか??
キーは偉大ということですね。
どうしてもListなんかで作った配列で、ほんとはここの要素それぞれに
意味があるんだよなぁ。
なんてことはあります。そんな時にdictionaryは効果を発揮します。
ちなみに、当初の目標のプログラムですがこんな感じで作れます。
fluits={"apple":100,"banana":200,"strawberry":500}
inputfruits=input("果物の値段を調べます。\n果物の名前を入力してください。")
print(fluits[inputfruits])
input関数については何度が本ブログでも紹介していますので、
そちらを参考にしてみてください。
実際にinput関数でコンソールで聞かれてから、appleと入力した結果がこちら↓↓↓
果物の値段を調べます。
果物の名前を入力してください。apple
100
3行で完成してしまいました。
本来は、入力される文字列が数字で来たり、
あらかじめdictionaryに入れている3つの果物以外が来た場合の処理もしないといけないのですが、
今回の内容とは外れてしまうのでまた今度紹介します。
もちろんデメリットもある。
メリットもありますが、デメリットももちろんあります。
例えば、こんなデータを想像してみてください。
ある検査データを解析することになりました。 その検査データは10,000回分のデータでした。 それぞれの検査データはキーに設定するとしても測定回数くらいしかありません。
はい。こんな状況です。
10,000回それぞれが特徴的な何か。例えばまったく異なる種類の製品だった場合、
キーを入れるのが適当かもしれませんが、
今回の場合、キー設定する必要がありません。
そんな状況でdictionaryを使うのは無駄ですね…
というわけで、無作為の大量なデータに関してはむしろdictionaryだと定義に時間がかかります。
それに、仮にdictionaryにしても取り出す時にキーを指定するとき意味のないものだと、
ぎゃくに混乱のもとになります。
キーが便利だからと言って、なんでもかんでもdictionaryを使うのは適当ではありません。
今回のdictionaryのまとめ
ここまでdictionaryの使い方、便利なところ、こんなこともできるよ。
についてご紹介してきました。
Listだけで済むこともありますが、どうしてもそれぞれのパラメータに意味があるばあいは、
こちらのdictionaryを使用したほうが後から理解しやすいという側面があります。
おなじソースを他の人も触るときはこちらのほうが理解が早いですね。
ただし、意味のないデータ群までdictionaryを使うことだけは避けましょう….
コメント