LoginSignup
2
4

More than 5 years have passed since last update.

Pythonでプログラミングを始めよう! 〜辞書の使い方〜

Posted at

辞書(dictionary)とは

辞書(dictionary)型とは、{}の中にkeyとvalueの組み合わせが含まれているデータのことです。

{'キー1':'値1','キー2':'値2','キー3':'値3'}

辞書型オブジェクトの作り方

括弧{}で囲んだ中に要素をカンマ「,]で区切って記述します。
要素はキーと値のペアで構成され,キーと値はコロン「:」で区切って記述します。

x = {'名前':'山田', '年齢':25}

上記の例ではキーが「名前」で値が「山田」とキーが「年齢」で値が[25」の辞書型オブジェクトを作成しています。

要素を参照する方法

辞書型オブジェクトは、リスト型のように多くの要素を持つことが出来ます。

要素を取り出すためにはキーを使い、値を取得します。

x = {'名前':'山田', '年齢':25}
y = x['名前']
print(y)
#山田

注意したいのは、要素へのアクセスの際は{}ではなく[]を使うということです。

上記だと、キーが存在しないエラーになってしまいます。
キーが存在しない場合に任意の値を返すにはget関数を使います。

x = {'名前':'山田', '年齢':25}
y = x.get('性別','男')
print(y)
#男

要素の追加

辞書型オブジェクトに、要素を追加してみましょう。
下記のコードでは、キーが「性別」で値が「男」の要素追加しています。

x = {'名前':'山田', '年齢':25}
x['性別'] = '男'
print(x)
#{'名前':'山田', '年齢':25, '性別':'男'}

要素の削除

要素を削除する場合、pop関数もしくはclear関数を使います。

個別に要素を削除するには、pop関数を使います。

x = {'名前':'山田', '年齢':25}
x.pop('名前') #pop('要素のキー')
print(x)
#{'年齢':25}

全ての要素を削除するには、clear関数を使います。

x = {'名前':'山田', '年齢':25}
x.clear()
print(x)
#{}

要素を検索する

要素を検索する方法として、下記の3パターンが挙げられます。
1. キーで検索
2. 値で検索
3. キーと値の両方で検索する
それぞれの検索方法を説明していきます。

辞書のキーの存在を確認、取得(検索): in演算子

辞書に対してキーの存在を判定するにはin演算子を使います.
ちなみにPython2では使えたhas_key関数は,Python3では無くなっています。

x = {'名前':'山田', '年齢':25}
print('名前' in x)
#True
print('キー' in x)
#False

辞書の値の存在を確認、取得(検索): in演算子, values関数

辞書に特定の値が含まれているかどうかを判定するには、in演算子と
辞書の全ての値のみを配列で返すvalues関数を使います。

x = {'名前':'山田', '年齢':25}
print('山田' in x.values())
#True
print('名前' in x.values())
#False

辞書のキーと値の組み合わせで存在を確認、取得(検索): in演算子, items関数

辞書に特定のキーと値の組み合わせが含まれているかどうかを判定するには、
in演算子と辞書の全てのキーと値の組み合わせを返すitems関数を使います。

x = {'名前':'山田', '年齢':25}
print(('名前','山田') in x.items())
#True
print(('名前','佐藤') in x.items())
#False

For文を使っての繰り返し処理

辞書内包表記

辞書もリスト(list)と同じように内包表記が使えます。

基本的な書き方は下記になります。

処理対象(配列などの部分)が、配列(リスト)の場合

x = { str(i):i for i in 配列}

上記は、下記の処理を内包表記を使って書いたものになります。
例)

list = ['a','b','c']
x = {}
for i in list:
    x[str(i)] = i

print(x)
#{'a':'a', 'b':'b', 'c':'c'}

処理対象(配列などの部分)が、辞書の場合

x = { k:v for k,v in 辞書.items()}

例)

x = {'名前1':'山田', '年齢1':25,'名前2':'佐藤', '年齢2':20}
y = {}
for k,v in x.items():
    y[k] = v

print(y)
#{'名前1': '山田', '年齢1': 25, '名前2': '佐藤', '年齢2': 20}

条件を満たす辞書の要素を抽出して、処理を適用するには
下記のようにします.

x = {'名前1':'山田', '年齢1':25,'名前2':'佐藤', '年齢2':20}
y = { k:v for k,v in x.items() if '名前' in k }
print(y)
#{'名前1': '山田', '名前2': '佐藤'}

まとめ

辞書の扱い方は、上記のほかにもいろいろとあります。
公式ドキュメントなども確認してみ下さい。

次回は、文字列操作について解説していきます!

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4