再Pythonの辞書とは?
Bunchクラスを説明した時に、少しスタンダードな辞書のことを説明しました。
辞書とはデータを格納する形式の1つです。
また前にはリストと呼ばれるデータの格納方法に関して説明をしています。
リストの場合、順番(インデックス)が自動で決められ、その数字で要素を呼び出すことができるということでした。
data = ["a", "b", "c", "d", "e"]
print(data[2])
実行結果
c
この場合、dataという名前のリストの中に、”a” “b” “c” “d” “e” がこの順で並んでいます。
Pythonでの数の数え方は「0」から数えますので、data[2]と指定すると、3番目の要素を取得することができ、実行結果では「c」と表示されました。
またBunchクラスでは、格納したデータを文字で呼び出せる方式でした。
from bunch import Bunch
dataset = Bunch()
abc = ["a", "b", "c", "d", "e"]
dataset.abc = abc
print(dataset.abc)
実行結果
['a', 'b', 'c', 'd', 'e']
まずdataset = Bunch()でBunchの辞書を作り、abcを格納しています。
データを呼び出すには、インデックスで呼び出すのではなく、dataset.abcというように文字(キー)で格納したデータを呼び出します。
Bunchを解説した際に、あまり使われていないかも?と思い、Pythonの基本機能にある辞書クラスも勉強してみようと思い、ちょっと学んでみました。
基本的にはBunchと同じで、「キー」と「値」を組み合わせて格納し、「キー」を用いて呼び出す方式でした。
辞書の作り方と要素の追加の仕方
辞書の作り方は、格納したい要素がわかっている場合は、こんな感じです。
dataset = {"test1":"a", "test2":"b", "test3":"c"}
print(dataset["test1"])
実行結果
a
この際、要素はそれぞれ「キー」と「値」から成り立っています。
そして、各要素の間はカンマ(,)で区切られており、キーと値の間はコロン(:)で区切られています。
また全体はカギ括弧({})で括られています。
個人的にこの書き方がなんとなく慣れなくて、辞書をずっと使っていませんでした。
しかし最近、違う書き方があると知り、学んでみよう、使ってみようとなったわけです。
その書き方では、まずは空の辞書を作ります。
dataset = {}
実行結果
リストの場合は角括弧([ ])でしたが、辞書の場合はかぎ括弧({ })であることに注意してください。
その後、要素を追加します。
dataset = {}
dataset["test1"] = "a"
print(dataset["test1"])
実行結果
a
datasetの後ろの角括弧の中が「キー」、イコールの後が「値」になります。
「キー」を変えれば、この書き方でいくつでも要素を追加できます。
dataset = {}
dataset["test1"] = "a"
dataset["test2"] = "b"
dataset["test3"] = "c"
print(dataset["test1"])
print(dataset["test2"])
print(dataset["test3"])
実行結果
a
b
c
最初の書き方では、辞書を作る際に要素を全て入れなければいけないと思っていたので、なんとなく使いにくいなと思ってしまったわけです。
実際はそんなことはなく、後から追加可能ですので、安心して使っていきたいと思います。
ちなみにキーは文字列を入れていますが、数字でも大丈夫です。
dataset = {}
dataset[1] = "a"
print(dataset[1])
実行結果
a
でも「キー」を数字にすると、値の呼び出し方がリストと同じになってしまい、リストなのか辞書なのか分かりにくくなることでしょう。
個人的にはやはりこの混同を避けるため、キーは文字列のがいいのではないかと思います。
要素、キー、値の呼び出し方
「キー」を使って、「値」を呼び出すのは、先ほどからちらちら出ているdataset[“test1”]といった書き方になります。
dataset = {}
dataset["test1"] = "a"
print(dataset["test1"])
実行結果
a
全ての要素(キーと値)を取得するには、キーの指定をしなければ取得できます。
dataset = {}
dataset["test1"] = "a"
dataset["test2"] = "b"
dataset["test3"] = "c"
print(dataset)
実行結果
{'test1': 'a', 'test2': 'b', 'test3': 'c'}
全てのキーを取得する場合は、keys()を使用します。
dataset = {}
dataset["test1"] = "a"
dataset["test2"] = "b"
dataset["test3"] = "c"
print(dataset.keys())
実行結果
dict_keys(['test1', 'test2', 'test3'])
また全ての値を取得する場合は、values()を用います。
dataset = {}
dataset["test1"] = "a"
dataset["test2"] = "b"
dataset["test3"] = "c"
print(dataset.values())
実行結果
dict_values(['a', 'b', 'c'])
辞書に関してはこんな感じでしょうか。
Bunchを使っていたせいか、学んでみたら結構使いやすいなぁというのが本音です。
取得するデータが増えてきたら、リストでは何番目に何を格納したのか分からなくなりますし、やはり文字列であるキーを使って、データを分類しつつ、格納できる辞書は有用でしょう。
いないかもしれないけど、私のように食わず嫌いしていた方には是非使ってみてほしいクラスでした。
次回は関数の機能を忘れた時に役立つhelp関数に関して解説をしていきます。
ということで今回はこんな感じで。
コメント