Select Language

AI Technology Community

2.24 Python辞書

Pythonの辞書も集合の一種ですが、各要素はキーと値の2つの部分で構成されています。図1に示すとおりです。

辞書モデル
図1:辞書モデル


リストと同じ点は、辞書は要素の数に制限がなく、要素を動的に追加および削除できることです。リストと異なる点は、辞書は要素を自動的にある規則に従って並べ替えるため、要素を挿入する際に位置を指定できないことです。

Pythonで辞書を作成する

要素のない辞書、つまり空の辞書を作成する方法はいくつかあります。以下に、空の辞書を作成する3つの方法を示します。

>>> a = {}        # 1つ目の方法
>>> type(a)<type 'dict'>
>>> b = dict()    # 2つ目の方法
>>> type(b)<type 'dict'>
>>> c = dict([])  # 3つ目の方法:空のリストを入力として使用
>>> type(c)<type 'dict'>

以下では、要素の初期値を指定した辞書を作成します。

>>> a = {1: 100, 2: 200}  # 2つの要素を含む辞書、1つは1:100、もう1つは2:200
>>> type(a)<type 'dict'>

Python辞書の基本操作

このセクションでは、辞書の基本操作、辞書内の要素数の計算や辞書内容の変更などについて説明します。

1) 要素数を計算する——len()

辞書が空の場合は0を返し、それ以外の場合はキーと値のペアの数を表す正の整数を返します。

>>> a = {1: 100, 2: 200}  # 辞書aは2つの要素を含む
>>> len(a)                # 辞書aの要素数は2
2
>>> b = dict()            # 空の辞書bを作成
>>> len(b)                # 辞書bの要素数は0
0

2) 要素を追加する

キーが存在しない場合は、新しいキーを作成します。

>>> a = {1: 100, 2: 200}
>>> a[3] = 300  # 要素3:300を追加、キーは3、値は300
>>> a
{1: 100, 2: 200, 3: 300}

3) 要素の値を変更する

キーがすでに存在する場合は、そのキーの値を変更します。

>>> a = {1: 100, 2: 200}
>>> a
{1: 100, 2: 200}
>>> a[1] = 1000
>>> a
{1: 1000, 2: 200}

4) 要素の値を取得する——get()

キーが存在する場合は、そのキーに対応する値を返し、存在しない場合はNoneを返します。

>>> a = {1: 100, 2: 200}
>>> a.get(1)  # キー1が存在するので、それに対応する値100を返す
100
>>> a.get(8)  # キー8が存在しないので、Noneを返す
>>> r = a.get(8)
>>> r is None
True

5) 値を更新する——a.update(辞書b)

辞書bの要素が辞書aに存在する場合は、bの値でaの値を上書きします。存在しない場合は、新しい要素をaに追加します。この過程でaは変更されますが、bは変更されません。この関数には戻り値がありません。

>>> a = {1: 100, 2: 200}    # 辞書aを定義
>>> b = {1: 1000, 3: 3000}  # 辞書bを定義
>>> a.update(b)             # 辞書bの内容でaの内容を更新
>>> a                       # 辞書aが変更された
{1: 1000, 2: 200, 3: 3000}
>>> b                       # 辞書bは変更されていない
{1: 1000, 3: 3000}

6) あるキーが存在するかどうか——has_key(キー)

キーが存在する場合はTrueを返し、存在しない場合はFalseを返します。

>>> a = {1: 100, 2: 200}  # 辞書aを定義、2つのキー1と2がある
>>> a.has_key(1)          # キー1が存在するか?存在する
True
>>> a.has_key(3)          # キー3が存在するか?存在しない
False

7) キーのリストを取得する——key()

この関数は、元の辞書のキーを要素とするリストを返します。

>>> a = {1: 100, 2: 200}
>>> r = a.keys()
>>> type(r)<type 'list'>
>>> r
[1, 2]

8) 値のリストを取得する——values()

この関数は、元の辞書の値を要素とするリストを返します。

>>> a = {1: 100, 2: 200}
>>> r = a.values()
>>> type(r)<type 'list'>
>>> r
[100, 200]

重複する値がある場合は、返されるリストにも重複する要素が含まれます。

>>> a = {1: 100, 2: 200, 3: 200}
>>> r = a.values()
>>> type(r)<type 'list'>
>>> r
[100, 200, 200]  # 重複する要素200がある

9) すべての要素を削除する——clear()

この操作ではすべての要素が削除されますが、辞書自体は残ります。

>>> a = {1: 100, 2: 200, 3: 200}  # 辞書aを作成
>>> len(a)                        # 辞書aは3つの要素を含む
3
>>> id(a)                         # 辞書aのidを確認
48498080
>>> a.clear()                     # 辞書aのすべての要素を削除
>>> len(a)                        # 辞書aには要素がなくなった
0
>>> id(a)                         # 辞書aのidは変化していない
10      48498080

10) 指定したキーの要素を削除する——pop(キー)

指定したキーが存在しない場合は、KeyError例外が発生します。

>>> a =  {1: 100, 2: 200, 3: 200}  # 辞書aを作成、3つの要素
>>> a
{1: 100, 2: 200, 3: 200}
>>> len(a)                         # 辞書aの要素数は3
3
>>> a.pop(1)                       # キーが1の要素を削除、戻り値はそのキーの値
100
>>> a                              # 削除後、辞書aには2つの要素が残った
{2: 200, 3: 200}
>>> a.pop(10)                      # キー10を削除するが、そのキーは存在しない
Traceback (most recent call last):
  File "", line 1, in KeyError: 10

デフォルト値を指定することもできます。つまり、指定したキーが存在しない場合は、そのデフォルト値を返します。この場合は例外は発生しません。

>>> a = {1: 100, 2: 200, 3: 200}  # 辞書を作成
>>> a.pop(100, 888)               # 888はデフォルト値
888               &
post
  • 26

    item of content
Pythonの基本データ型は全部で26章あります。
この章では、整数型、浮動小数点数、文字列、ブール型、リスト、タプル、セットおよび辞書など、Pythonが提供する基本的なデータ型について紹介します。また、これらのデータ型に対する演算操作についても解説します。
私たちはPythonが強タイプ言語であることを知っています。つまり、各変数の型は特定の時点でのみ確定します。言い換えれば、Pythonにおける任意の生存しているオブジェクトの型は一意です。異なる型のオブジェクトには異なる属性があり、異なる操作を実行できます。
さらに、この章の最後では変数やオブジェクトなどの概念についても触れられます。それぞれのオブジェクトには確定した型があり、各変数は特定のオブジェクトを指し示します。