Python PR

【Python】辞書(マップ)の定義と使い方【dict】

記事内に商品プロモーションを含む場合があります

この記事では、Pythonの辞書の使い方を解説します。

辞書は、マップや連想配列と呼ばれ、keyvalueの2つの値を用いて扱われます。名前(key)と値(value)を紐つけることでkeyからvalueを呼び出すことができます。

要するに、名前から要素を取得できるコンテナです。

それでは、詳しく辞書の使い方を見ていきましょう!

辞書とは?

辞書とは、keyとvalueの2つの値を1つの要素として扱うコンテナです。

keyvalueを紐付け、keyからvalueにアクセスすることができます。keyには、ハッシュ可能な値を指定することができます。

リストや辞書のようなミュータブルなコンテナはハッシュ不可能だが、それ以外はほとんどハッシュ可能。

このようなkeyとなる値を任意のオブジェクトに対応付けるデータ型のことを「マッピング型」と呼びます。 さらに、辞書のことをmap(マップ)と呼ぶこともあるので覚えておきましょう。

辞書の特徴
  • keyとvalueで1つの要素
  • マッピング型である
  • 連想配列や連想記憶と呼ばれたりする

なんとなく辞書についてわかったところで辞書の生成方法と使い方を見てきましょう!

辞書の生成・初期化

辞書を生成するには、{}を使います。

変数 = {}

辞書のコンストラクタdict()を使っても宣言できます

変数 = dict()

辞書を初期化するには、{}内に key と value を:で区切って1組の要素とします。複数の要素を記述する場合は,(カンマ)で区切って記述します。

変数 = {key1: value1, key2: value2, ..., keyN: valueN}

試しに辞書を適当に初期化し、出力してみます。

d = {'key1': 1, 'key2': 2, 'key3': 3}

print(d)
print(type(d))

実行結果

{'key1': 1, 'key2': 2, 'key3': 3}
<class 'dict'>

辞書を生成して型を確認することができました。

辞書の使い方

簡単に辞書の使い方を見ていきましょう!

要素の取得

辞書の要素は、dict[key]で取得することができます。

d = {'name': '田中太郎', 'age': 20, 'gender': '男'}

print(d['name'])
print(d['age'])

実行結果

田中太郎
20

辞書に存在しないkeyを指定するとKeyErrorが発生します。

d = {'name': '田中太郎', 'age': 20, 'gender': '男'}

print(d['from'])

実行結果

Traceback (most recent call last):
  File "/Users/user/Desktop/Python/main.py", line 3, in 
    print(d['from'])
KeyError: 'from'

辞書の要素を取得する方法

要素の変更・追加

dict[key] = valueで指定したkeyの要素が辞書内に存在していればその要素のvalueを変更し、存在していなければ新たに追加します。

d = {'name': '田中太郎', 'age': 20, 'gender': '男'}

# 存在する key を指定
d['name'] = '山田花子'
print(d)

# 存在しない key を指定
d['from'] = 'Japan'
print(d)

実行結果

{'name': '山田花子', 'age': 20, 'gender': '男'}
{'name': '山田花子', 'age': 20, 'gender': '男', 'from': 'Japan'}

辞書の要素を変更・追加する方法

要素の削除

del dict[key]で指定した要素を削除することができます。

d = {'name': '田中太郎', 'age': 20, 'gender': '男'}

del d['gender']
print(d)

実行結果

{'name': '田中太郎', 'age': 20}

辞書の要素を削除する方法

要素の並び替え

辞書を並び替えるには、sorted()関数を使います。

d = {'name': '田中太郎', 'age': 20, 'gender': '男'}

sorted_d = sorted(d)
print(sorted_d)

実行結果

['age', 'gender', 'name']

辞書の要素を並び替える方法

長さの取得: len関数

len()関数を使って長さを取得できます。

len(dict)

試しに適当な辞書の長さを取得してみます。

d = {'name': '田中太郎', 'age': 20, 'gender': '男'}
print(len(d))

実行結果

3

keyの検索: in演算子

in演算子を使うことで辞書内に指定したkeyが存在するか確認できます。

key in dict

試しに指定したkeyが存在するか確認してみます。

d = {'name': '田中太郎', 'age': 20, 'gender': '男'}

# 存在する key
print('name' in d)

# 存在しない key
print('from' in d)

実行結果

True
False

内包表記を使う

内包表記{}を使うことで戻り値を辞書にすることができます。

辞書名 = {key: value for 変数 in 反復可能オブジェクト}

試しに内包表記で辞書を作成してみます。

d = {i: i * i for i in range(3)}

print(d)

実行結果

{0: 0, 1: 1, 2: 4}

zip()関数を使うことで2つのリストを使って辞書を作成できます。

辞書名 = {key: value for key名, value名 in zip(リスト1, リスト2)}

試しに2つのリストを作成し、そのリストから辞書を作成してみます。

keys = ['a', 'b', 'c']
values = [1, 2, 3]

d = {k: v for k, v in zip(keys, values)}
print(d)

実行結果

{'a': 1, 'b': 2, 'c': 3}

要素数が違う場合も試してみましょう!

keys = ['a', 'b', 'c', 'd']
values = [1, 2, 3]

d = {k: v for k, v in zip(keys, values)}
print(d)

実行結果

{'a': 1, 'b': 2, 'c': 3}

少ない要素数に合わせて処理されました!

まとめ

この記事では、Pythonの辞書の使い方を解説をしました。

今回のおさらい

簡単におさらいしておきましょう!

# 宣言・初期化
d = {'key1': 1, 'key2': 2}

# 要素にアクセス
print(d['key1'])  # 1

# 要素追加
d['key3'] = 3  # {'key1': 1, 'key2': 2, 'key3': 3}

# 要素削除
del d['key1']  # {'key2': 2, 'key3': 3}

# キー検索
'key1' in d  # False
'key2' in d  # True

リストだけでなく用途に合わして辞書などのコンテナを使うことで、より強固なプログラムを作成できます。辞書はできることが多く、覚えることがたくさんなので少しずつ慣れていきましょう。

また、辞書をカウンターとして使うこともできます。

Linkオブジェクトを数える(カウント)する方法【Counter】

それでは今回の内容はここまでです!それではまたどこかで〜( ・∀・)ノ