ディクショナリの次はセットです。集合とも呼ばれます。リストと同じように要素を追加、削除することができますが、重複した要素を持つことができないのが特徴です。また本項では更新することができないsetであるfrozensetも取り扱います。
※セットのもう少し踏み込んだ使い方はセットの比較・作成・更新で触れています。
セットの基本
セットはディクショナリと同じように「 {} 」(中カッコ)を使用します。
test_set_1 = {'python', '-', 'izm', '.', 'com'}
print(test_set_1)
print('--------------------------------')
for i in test_set_1:
print(i)
{'izm', '.', '-', 'python', 'com'}
--------------------------------
python
-
com
izm
.
要素がない空のセットを作成する時はsetを用います。
# これはディクショナリ
test_dict = {}
# これはセット
test_set = {'python'}
# 空のセットは「set」を使う
empty_set = set()
前述の通り、重複した値を持つことはできません。たとえば次の例では‘python’と‘izm’が重複していますが、そのセットの出力結果には1つだけしか存在していません。
test_set_1 = {'python', '-', 'izm', '.', 'com', 'python', 'izm'}
print(test_set_1)
print('--------------------------------')
for i in test_set_1:
print(i)
{'izm', '.', '-', 'python', 'com'}
--------------------------------
python
-
com
izm
.
要素の追加
単一の要素を追加する場合はadd、他のセットやリスト、タプルなどから要素を追加する場合はupdateを使用します。
test_set_1 = set()
test_set_1.add('python')
test_set_1.update({'-', 'izm', '.', 'com'})
print(test_set_1)
{'izm', '.', '-', 'python', 'com'}
要素の削除
セットから要素を削除する場合はremove、discardを使用します。removeは指定した要素が存在していない場合はエラーとなります。
test_set_1 = {'python', '-', 'izm', '.', 'com'}
test_set_1.remove('-')
test_set_1.discard('.')
print(test_set_1)
{'izm', 'python', 'com'}
frozenset
frozensetはfrozenset関数を使用して通常のsetのように作成できます。ただし次の例にあるようなremoveやdiscard、さらにaddやupdateなどを行おうとするとAttributeErrorが発生します。
test_set_1 = frozenset({'python', '-', 'izm', '.', 'com'})
# test_set_1.remove('-')
# test_set_1.discard('.')
print(test_set_1)
frozenset({'izm', '.', '-', 'python', 'com'})
