Python

【Python 5】コンテナ(集合と辞書)

環境

macOS Big Sur
Python3.8

集合(set)

「集合」はリストに似て複数の要素を持ちますが、重複しないように管理されます。波括弧({}:Curly Bracket)で囲み、データ(要素)をカンマ(,)で区切って定義します。

ミュータブルなリストや辞書、集合は要素として格納できません。変更により重複した要素ができてしまうことを防ぐためです。同様に、イミュータブルなタプルであってもミュータブルな要素が含まれている場合は使用できません。

空の集合は「set()関数」で定義できます(波角弧だけの場合は、空の辞書と判断されるため、関数を用いる必要があります。)。

集合の定義

集合名 = {値1, 値2, 値3, ...}

集合名 = set() ※空の集合

>>> a = {1, 2, 3, 4}

 

要素の呼び出し

インデックスによる管理ではないため、要素の呼び出しはできません。なお、要素には順番もありません。

集合演算子

「集合演算子」を使って新しい集合を作成することができます。

集合演算子 説明
| 和集合:A | B A,B2つの集合の重複しない全ての要素を含んだ集合を取得できる。
- 差集合:A - B Aの要素のうち、Bに含まれる要素を取り除いた集合を取得できる。
& 交わり:A & B A,B2つの集合に共通している要素のみの集合を取得できる。
^ 対称差:A ^ B A,B2つの集合に共通している要素以外の集合を取得できる。

 

>>> a = {1, 3, 5, 7, 9}
>>> b = {2, 3, 5, 7}
>>> a | b
{1, 2, 3, 5, 7, 9}
>>> a - b
{1, 9}
>>> a & b
{3, 5, 7}
>>> a ^ b
{1, 2, 9}

 

辞書(ディクショナリ)

「辞書」はリストのようなインデックスではなく、値(バリュー)にキーをつけて管理します(「キーバリューペア」といいます。また、値にキーを関連づけることを「マッピング」といいます。)。キーと値をコロン(:)で区切ったものを1つの要素とし、要素をカンマ(,)で区切って全体を波括弧({})で囲んで定義します。

波括弧だけの場合は、データの無い空の辞書を定義したことになります。空の辞書は「dict()関数」でも定義できます。

キーには数値や文字列、タプルといったイミュータブルが使用できますが、リスト、辞書、集合といったミュータブルは使用できません。変更により同一のキーができてしまうことを防ぐためです。同様に、イミュータブルなタプルであってもミュータブルな要素が含まれている場合は使用できません。

値には数値や文字列、リスト、辞書、集合、タプルいずれも使用できます。

辞書の定義

辞書名 = {キー1: 値1, キー2: 値2, キー3: 値3, ...}

辞書名 = {} ※空の辞書

辞書名 = dict() ※空の辞書

>>> a = {1: 'Ⅰ', 2: 'Ⅱ', 3: 'Ⅲ', 4: 'Ⅳ'}

 

要素の呼び出し

キーを指定することで、値を呼び出すことができます。辞書名に角括弧をつけ、その括弧内にキーを指定します。

辞書のキー指定

辞書名[キー]

>>> a = {1: 'Ⅰ', 2: 'Ⅱ', 3: 'Ⅲ', 4: 'Ⅳ'}
>>> a[1]
'Ⅰ'

 

要素の変更、追加

既存のキーを指定し、異なる値を代入することで、値を変更することができます。また、新しいキーを指定し値を代入すると、要素を追加することができます。

>>> a = {1: 'Ⅰ', 2: 'Ⅱ', 3: 'Ⅳ'}
>>> a[3] = 'Ⅲ'
>>> a
{1: 'Ⅰ', 2: 'Ⅱ', 3: 'Ⅲ'}
>>> a[4] = 'Ⅳ'
>>> a
{1: 'Ⅰ', 2: 'Ⅱ', 3: 'Ⅲ', 4: 'Ⅳ'}

 

要素の削除

「del文」で要素を削除することができます。

要素の削除

del 辞書名[キー]

>>> a = {1: 'Ⅰ', 2: 'Ⅱ', 3: 'Ⅲ', 4: 'Ⅳ'}
>>> del a[4]
>>> a
{1: 'Ⅰ', 2: 'Ⅱ', 3: 'Ⅲ'}
>>> del a  # 変数全体を削除することもできます。