長期投資シミュレーションツール『Tousimu』をリリースしました!

【初心者必見】Pythonの辞書(dictionary)の使い方を徹底解説!

プログラミング
スポンサーリンク

この記事では

pythonの基本文法である「辞書(dictionary)」の使い方を

詳しくご紹介します!

辞書は様々な場面で使用できる非常に便利な文法で

プログラミングをするためには不可欠です!

使い方をしっかり確認しておきましょう!

そもそも「Pythonって何?」という方は

こちらで詳しく紹介しているので、ぜひご参考ください!

スポンサーリンク

そもそも辞書(dictionary)とは何なのか

まずは「辞書(dictionary)とは何なのか」です。

辞書は複数の変数を入れておく箱!

辞書は簡単に言うと

複数の変数を入れておく箱」みたいなものです!

なんでわざわざ箱に入れなきゃいけないの?

例えば以下のような

「各生徒テストの点数を入力して、クラス合計点を出力する」プログラムを考えます。

# "80 70 90"と入力してそれぞれをscore_1, score_2, score3に代入
score_1, score_2, score_3 = input().split()

# 合計点を計算
total_score = int(score_1) + int(score_2) + int(score_3)

# 合計点を出力
print(total_score)

もし「入力と出力って何?」や

「数値計算のやり方がわからない」という方は

こちらで詳しく紹介しているので、ぜひご参考ください!

上記のコードの場合、入力される点数が3人分のため

変数をscore_1,score_2,score_3と用意し代入しています。

しかしこのコードだと、もし生徒の人数が30人になった時

score_1,score_2,・・・,score_29,score_30

30個の変数を定義する必要があり、とても大変です。

たしかに!生徒の人数が多いほど変数も増えちゃう!

どうせ全てテストの点数なので、「テストの点数」という名前の箱

まとめて入れることができれば楽だと思いませんか?

その箱こそが「辞書」です。

辞書を使うと、上記のコードは以下のように書くことが出来ます。

# 生徒の名前
students = ["A", "B", "C"]

# "80 70 90"と入力して、辞書にまとめて代入
scores = {}
for i, score in enumerate(input().split()):
    scores[students[i]] = score

# scoresの中には入力した点数が生徒の名前とセットで入っている
print(scores)
# '{'A': '80', 'B': '70', 'C': '90'}'と出力

score_1,score_2,score_3と書いていた部分がscoresとなり

非常にスッキリしたのがわかるかと思います!

またfor文についてはこちらをご参考ください!

辞書の要素はキー(key)で指定できる!

ここまで「辞書は複数の変数を入れる箱」ということをご説明しました。

しかし箱であるならば

中の要素を出して使えないと意味がないですよね?

もちろん辞書では要素を指定して使うことが出来ます。

変数に名前を付けていないのに指定できるの??

辞書では中の要素をその要素のキー(key)で指定できます!

辞書の要素の指定

(辞書)[(指定する要素のキー)]

例えば先程の「テストの点数」のコードの場合

scores["B"]とすることで2番目に入力した点数を指定できます。

# 生徒の名前
students = ["A", "B", "C"]

# "80 70 90"と入力して、辞書にまとめて代入
scores = {}
for i, score in enumerate(input().split()):
    scores[students[i]] = score

# キーとして"B"を指定
print(scores["B"])
# "70"と出力

また辞書と同様に、リストでも変数をまとめて扱うことができます!

リストについてはこちらをご参考ください!

スポンサーリンク

辞書の基本操作(定義・追加・置換・削除)

では次に「辞書の基本操作」を説明していきます!

辞書の基本操作は3つです。

辞書の基本操作
  • 辞書の定義(作成)
  • 辞書へ要素の追加・置換
  • 辞書の要素の削除

それぞれに詳しくご説明します!

辞書の定義(作成)

まずは「辞書の定義(作成)」です。

辞書の定義には必ず要素とセットになるキーが必要です!

辞書の定義

(辞書)={(要素1のキー):(要素1),(要素2のキー):(要素2),・・・}

また辞書の中にはが異なる変数も入れることが出来ます!

# int型のみの辞書
int_dict = {"a":1, "b":2}

# string型のみの辞書
str_dict = {"a":"あ", "b":"い"}

# 両方の型を含んだ辞書
mix_dict = {"a":1, "b":"あ"}

変数の型については、こちらをご参考ください!

さらに辞書中の要素の数が1つもしくは何も入っていなくても定義できます。

# 要素が1つの辞書
1_dict = {"a":1}

# 要素が空の辞書
0_dict = {}

辞書の要素の追加・置換

次は「辞書の要素の追加と置換」です。

なんで追加と置換をまとめて紹介するの?

辞書では同じ操作で

  • 辞書内に指定したキーが存在しなければ追加
  • 辞書内に指定したキーが存在すれば置換

のように要素の追加と置換が出来るので、まとめてご紹介します。

辞書の要素の追加と置換の方法は簡単です。

辞書の追加と置換の方法

(辞書)[(キー)]=(追加する要素)

scores = {"A":80, "B":70, "C":90}

# キーを"D"として60を追加
scores["D"] = 60

# {"A":80, "B":70, "C":90, "D":60}と出力
print(scores)

# キーが"B"の要素を100に置換
scores["B"] = 100

# {"A":80, "B":100, "C":90, "D":60}と出力
print(scores)

まとめて覚えられるから便利だね!

辞書の要素の追加と置換は方法が同じなので覚えやすいですが

追加したつもりが置換してしまった

というミスが起こる可能性もあるので注意しましょう!

また要素の追加としてsetdefaultメソッドを使用する方法もあります。

setdefaultメソッドは

  • 辞書内に指定したキーが存在しなければ追加
  • 辞書内に指定したキーが存在すればその要素を返す

のように、キーが存在しない場合のみ追加し置換は行わないため

誤って値を変えてしまうリスクを避けることが出来ます。

setdefaultメソッドの使い方は以下です。

setdefaultメソッドの使い方

(辞書).setdefault((キー),(追加する要素))

scores = {"A":80, "B":70, "C":90}

# キーを"D"として60を追加
scores.setdefault("D", 60)

# {"A":80, "B":70, "C":90, "D":60}と出力
print(scores)

# キーを"B"として100を追加するが、置換されない
scores.setdefault("B", 100)

# {"A":80, "B":70, "C":90, "D":60}と出力
print(scores)
# 70と出力
print(scores.setdefault("B", 100))

2つの方法は状況に応じて使い分けましょう!

辞書の要素の削除

次は「辞書の要素の削除」です。

主に使う削除の方法は3種類です。

辞書の要素の削除の方法
  • 辞書の要素を全て削除
  • 指定したキーの要素を削除
  • ランダムに要素を削除

辞書の要素を全て削除

まず「辞書の要素を全て削除」では、clearメソッドを使用します。

clearメソッドの使い方は非常に簡単です。

clearメソッドの使い方

(辞書).clear()

scores = {"A":80, "B":70, "C":90}

# 要素を全て削除
scores.clear()

# {}と出力
print(scores)

指定したキーの要素を削除

次に「指定したキーの要素を削除」では、popメソッドを使用します。

popメソッドの使い方も簡単です。

popメソッドの使い方

(辞書).pop((キー))

scores = {"A":80, "B":70, "C":90}

# キーが"B"の要素を削除
scores.pop("B")

# {"A":80, "C":90}と出力
print(scores)

またpopメソッドでは削除した要素を変数に代入できます!

scores = {"A":80, "B":70, "C":90}

# キーが"B"の要素を削除
score = scores.pop("B")

# {"A":80, "C":90}と出力
print(scores)
# 70と出力
print(score)

そのため削除ではなく、「切り取り」のようなイメージで使用できます!

ランダムに要素を削除

最後に「ランダムに要素を削除」では、popitemメソッドを使用します。

popitemメソッドの使い方は簡単です。

popitemメソッドの使い方

(辞書).popitem()

scores = {"A":80, "B":70, "C":90}

# ランダムに要素を削除
scores.popitem()

 # {"A":80, "B":70}と出力
print(scores)

popitemメソッドもpopメソッドと同様に削除した要素を変数に代入出来ます!

scores = {"A":80, "B":70, "C":90}

# ランダムに要素を削除
k, v = scores.popitem()

# {"A":80, "B":70}と出力
print(scores)
# 削除した90が出力
print(v)
# 90のキーである"C"が出力
print(k)
スポンサーリンク

まとめ

今回はpythonの辞書について

  • 辞書とは何なのか
  • 辞書の基本操作

という流れで紹介しました。

辞書はリストと同様にプログラミングの様々な場面で使用し

効率的なコードを書くことが出来ます!

しっかりと使い方を覚えて、効率的にコードを書いていきましょう!

またPythonの基本的な文法はこちらで詳しく紹介しているので

ぜひご参考ください!

Pythonを学びたいと思っているけど

  • プログラミングスクールに数十万円も払えない・・・
  • 独学だとどうやって学んだらいいかわからない・・・
  • Pythonのインストールや環境構築がよくわからない・・・

といったお悩みを抱えている方はいませんか?

Pythonの学習はオンライン学習サービスのPyQがおすすめです!

PyQ

PyQの特徴は圧倒的なコストパフォーマンスで

たった月額3,040円で以下のPythonに関する内容が学び放題です!

PyQで学べる内容
  • プログラミングの基本
  • Python入門〜中級
  • ユニットテスト、設計
  • Webアプリ開発
  • Django(Pythonを使ったWebアプリ開発のフレームワーク)
  • スクレイピング
  • データ解析
  • 機械学習
  • 統計入門
  • アルゴリズム

またブラウザ上でコードを書いて学習できるため

面倒なPythonのインストールや環境構築なども一切不要です!

実際に私もプログラミングを始めた頃に利用していて

PyQを一通りやり終えた後は

  • Djangoを使ったポートフォリオの制作
  • スクレイピングによる作業の自動化
  • ディープラーニング

などのプログラムを自分で書けるようになり

paizaのスキルチェックでもSランクを所得しました!

PyQは登録後すぐに学習を開始できるので

Pythonの学習方法でお悩みの方は、今すぐPyQで学習をスタートしましょう!

しかし

  • 独学で挫折した経験がある・・・
  • 短期間でpythonを習得したい!
  • プロのエンジニアからpythonを学びたい!

という方は、PyQでの独学よりも

プログラミングスクールでの学習が最適かもしれません!

pythonが学べるおすすめのプログラミングスクールはこちら!

TechAcademy Pythonコース

おすすめスクールNo.1:TechAcademy Pythonコース

TechAcademyがおすすめな理由
  • 学習システムを1週間無料で体験できる!
  • 完全オンラインだから、忙しくても続けられる!
  • 各受講生に現役エンジニアのメンターがつく!

DIVE INTO CODE エキスパートAIコース

おすすめスクールNo.2:DIVE INTO CODE エキスパートAIコース

DIVE INTO CODEがおすすめな理由
  • 本気の人のためのスクール!事前テストで選考あり!
  • 無料説明会&体験セミナーあり!
  • 通学 or オンラインが選択できる!

CodeCamp Pythonデータサイエンスコース

おすすめスクールNo.3:CodeCamp Pythonデータサイエンスコース

DIVE INTO CODEがおすすめな理由
  • 無料体験レッスン受講で10,000円引き
  • 受講者数30,000人超えの圧倒的な実績!
  • レッスン満足度96.6%

ぜひ自分に合った学習方法でPythonを習得しましょう!

プログラミング Pythonの勉強法
スポンサーリンク
Follow Me!
スポンサーリンク
まろぶろぐ
タイトルとURLをコピーしました