こんにちわ!この記事はPythonの初学者のための内容となっております。
前回は、中級内容として、包括表記について学習しました。
前回の記事
今回は、辞書型配列というものを学習していきましょう!
この辞書型配列は、今までに扱ってきた配列の1種なのですが、ちょっと書き方が変わってくるのでしっかりと見ていきましょう!
この記事を読むメリット
- 辞書型配列の基本がわかる!
- 文字数カウンターの記述例を知れる!
- 配列の知識が増える!
頑張っていくどん!
オラァァァァァーー!!
プログラミングスクールに関しては下の記事で詳しく記述しています。
こちらで紹介しているスクールは、すべて無料期間がある優良なスクールのみで、特徴を明確にし、読者のニーズに絞って丁寧に解説しました。初めての一歩として、無料説明会に参加してみてください。
Let’s practice a little!!

辞書型配列とは?
辞書型配列とは、ほかの言語では、「連想辞書」とも呼ばれ、ある「Key」に対しての「Value」(値)を関連付けて扱うための配列の1種で、使い方によってはとても便利なのもとなります。使い方の例としては、後程実際にコードを記述するのですが、大量の単語があり、その単語ごとに、出現回数を計算させたりすることで、どんな言葉がよく使われているのかなどを分析するのに役に立ちます。
記述方法のイメージとしては、本の辞書を見開いた時に、左のページには、「Key」を、右のページには、「Value」を格納する感じです。今まで学習してきた、配列の扱い方や、ループ文とも大きく関わりがあるのでまだ、理解が浅いなと感じる方はもう一度過去の記事を読むことをお勧めします。
それでは、さっそく辞書型配列の書き方や扱い方を学んでいきましょう!
d = {"リンゴ" : 3, "バナナ" : 5, "サクランボ" : 2}
print(d["リンゴ"])
#3辞書型配列の書き方はこんな感じです。今までの配列とは少し違いますね。
- あるKeyに対して、値、Valueが設定されていること。
- 括弧の種類は「{}」を使うこと。
- データを参照するときは、要素番号ではなく、Keyを用いること。
この辺が今までの配列とは違う点です。
次にループ文を用いて、辞書型配列の全体を参照する方法を見ていきましょう!
まずは、for文でそのままループさせてみるよ!
d = {"リンゴ" : 3, "バナナ" : 5, "サクランボ" : 2}
for k in d:
print(k)
"""
リンゴ
バナナ
サクランボ
"""「Key」だけが出力されてるね!
そうだね!それでは、「Value」も参照する方法をみていこう!
d = {"リンゴ" : 3, "バナナ" : 5, "サクランボ" : 2}
for key, value in d.items():
print(key + "は" + str(value) + "個あります。")
"""
リンゴは3個あります。
バナナは5個あります。
サクランボは2個あります。
"""こんな感じやで!
なるほど!「items()」を使えば「Key」も「Value」も出るんだね!
このコードの記述例のように、「(辞書型配列名).items()」と書くことで、値を参照することが出来るようになります。これまでは、辞書型配列を参照し、出力するだけでしたが、この後の章では、データを追加したり、編集するための方法を学んでいきましょう!
Let’s practice more!!

辞書の登録
それでは、辞書型配列の実践編をやっていきましょう!
今回は、ある文字列が大量に与えられるので、それぞれの単語が何回ずつ出現するのかをカウントするプログラムを作っていきましょう!
考え方としては、辞書型配列を定義して、文字列が格納されている配列を順番に参照していきます。方法としては、参照した単語が、
- すでに辞書に登録してある場合:その単語の「Value」の回数を+1
- まだ辞書に登録していない場合:新規にその単語を辞書に登録する
全体の流れとしてはこんな感じやで!見ていこう!
d = {} #辞書型配列の定義
words = ["心", "愛", "鳥", "鮫", "栗", "柿", "栗", "心", "鳥", "あい",
"あい", "作", "鳥", "柿", "鮫", "愛", "作", "心", "鮫", "愛"]
#単語リスト
for word in words: #単語リストの参照
if word in d: #単語が辞書に登録されていれば
d[word] += 1
else: #単語が辞書に登録されていなければ
d[word] = 1
print(d)
#{'心': 3, '愛': 3, '鳥': 3, '鮫': 3, '栗': 2, '柿': 2, 'あい': 2, '作': 2}この考え方ができるようになれば、例えば、Twitterから、頻出の単語を抜き出して検索をかけたりすることや、ニュースの記事などから、大まかな内容を把握することだってできちゃいます!
次に、辞書型配列同士を結合する方法を見ていきましょう!
d1 = {"a" : 1, "b" : 2}
d2 = {"c" : 3, "d" : 4, "e" : 5}
d1.update(d2)
print(d1)
#{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}この例では、2つの辞書を一つに連結しています。
同じ「Key」があった場合には、後から連結されるほうの「Value」に更新されます。
また、2つの配列の要素を関連付けて1つの辞書にすることもできます。
d = {}
d1 = ["a", "b", "c"]
d2 = [1, 2, 3]
d.update(zip(d1, d2))
print(d)
#{'a': 1, 'b': 2, 'c': 3}最初に空の辞書を設定しておき、配列の要素を「zip」関数でまとめたものを、辞書に登録しているのがわかると思います。ほかにも演算子を使った方法もありますが、今回は長くなるので割愛します。
それでは、本日のまとめ問題をやってみよう!
Today’s final practice!!

まとめ
今回は、辞書型配列についての内容でした。
連想辞書を用いることで、対応付けた値を格納でき、処理がしやすくなる場合があります。
配列を使うべきなのか、辞書型配列を使うべきなのかの見極めは、ある程度理解が深まったときに判断できるようになると思いますので頑張っていきましょう!
本日の理解度調査
今日の最後に理解度調査をします!!
どうすれば正しくなるのか考えてみてね!!
Q. wordsにある単語の1文字目が”e”であるものを、その単語と文字数で辞書に登録せよ。
d = {}
words = ["encyclopedia", "cyclopedia", "opportunity",
"enthusiasm", "equivalent", "authorization",
"flightless", "meltaway", "encourage"]
for word in words:
if ??? == "e": #ここに入れる式はなにかな?
d[word] = ??? #ここに入れる式はなにかな?
print(d)
#{'encyclopedia': 12, 'enthusiasm': 10, 'equivalent': 10, 'encourage': 9}
正解は。。。
for word in words:
if word[0] == "e":
d[word] = len(word)わかったかな??正解出来たら今回の項目は完璧だね!!
ナノトイラボ 
