この記事では、Pythonの辞書の使い方を解説します。
辞書は、マップや連想配列と呼ばれ、key
とvalue
の2つの値を用いて扱われます。名前(key)と値(value)を紐つけることでkey
からvalue
を呼び出すことができます。
要するに、名前から要素を取得できるコンテナです。
それでは、詳しく辞書の使い方を見ていきましょう!
辞書とは?
辞書とは、keyとvalueの2つの値を1つの要素として扱うコンテナです。
key
とvalue
を紐付け、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】
それでは今回の内容はここまでです!それではまたどこかで〜( ・∀・)ノ