辞書型は、Pythonの中でも非常に重要で便利なデータ型の1つです。この記事では、辞書型の基本的な使い方から、よく使うプログラムテクニック、さらには応用例として単語カウントプログラムの解説までを取り上げます。
辞書型とは?
辞書型(dict
)は、キーと値のペアを扱うデータ型です。
たとえば、英語の辞書を考えると、「単語」がキーで、その意味が「値」に相当します。
Pythonの辞書型は、このようにデータを整理し、効率的にアクセスするために使います。
辞書型の作り方
辞書型は、波括弧 {}
を使って定義します。
d = {"apple": "りんご", "banana": "バナナ", "cherry": "さくらんぼ"}
ここで:
- "apple"
、"banana"
、"cherry"
がキー
- "りんご"
、"バナナ"
、"さくらんぼ"
が値です。
キーを指定して値にアクセスします。
print(d["apple"]) # 出力: りんご
値を更新したり、新しいキーと値を追加することもできます。
d["apple"] = "アップル" # 更新 d["orange"] = "オレンジ" # 新規追加 print(d) # 出力: {'apple': 'アップル', 'banana': 'バナナ', 'cherry': 'さくらんぼ', 'orange': 'オレンジ'}
辞書型でよく使うテクニック
1. キーの存在確認
辞書型には、指定したキーが存在するかどうかを確認する方法があります。
if "apple" in d: print("りんごは存在します") else: print("りんごは存在しません")
2. 辞書のループ
辞書のキーや値を順番に処理するにはfor
ループを使います。
for key, value in d.items(): print(f"{key} は {value} です")
3. 辞書の初期化とget
メソッド
辞書のキーに対応する値が存在しない場合に、エラーを避けてデフォルト値を返すには、get
メソッドを使います。
print(d.get("mango", "キーが存在しません")) # 出力: キーが存在しません
この例では、辞書dにmangoというキーが無いので、getメソッドの2番目の引数「キーが存在しません」が返されました。 もし、dがmangoというキーを持っていれば、そのキーに対応する値が返されます。
4. 要素の削除
辞書からキーと値のペアを削除するには、del
を使います。
del d["banana"] print(d) # 出力: {'apple': 'アップル', 'cherry': 'さくらんぼ', 'orange': 'オレンジ'}
応用例:単語カウントプログラム
辞書型は、データを効率よく集計するのに便利です。ここでは、文章中の単語の出現回数をカウントするプログラムを例に解説します。
プログラム
def count_words(text): words = text.split() word_counts = {} for word in words: word = word.lower().strip(".,!?;:") word_counts[word] = word_counts.get(word, 0) + 1 return word_counts text = "Hello, world! Hello Python. Hello Python programming." result = count_words(text) print(result) # 出力: {'hello': 3, 'world': 1, 'python': 2, 'programming': 1}
解説
単語分割:
split()
で文字列を空白で区切り、単語のリストを作ります。
正規化:
- 各単語を小文字に変換し、末尾の句読点を
strip()
で取り除きます。
- 各単語を小文字に変換し、末尾の句読点を
辞書でカウント:
get
メソッドを使い、辞書に単語が存在しない場合は0
を初期値として加算します。
結果:
- 辞書型を使って単語ごとの出現回数を保存し、最終的にその結果を返します。
辞書型の使いどころ
データの集計:
- 単語カウントや、カテゴリごとのデータ整理などに便利です。
設定値の管理:
- アプリケーションの設定をキーと値で管理する際に使われます。
データの高速アクセス:
- キーを指定して値を素早く取得できるため、検索操作が多い場面で役立ちます。例えば、プログラミング言語のシンボル・テーブルはその代表例です。
辞書型は、データを整理し効率的に扱うための強力なツールです。 使われる頻度はそれほど多くはありませんが、上記の使いどころなどでは、威力を発揮します。