set オブジェクトは、ユニークな要素(重複しない要素)のみを保持するコレクションの一種です。
set オブジェクトは下記のように、いろいろな方法で作成することができます。
s = set() # 空のセットを生成
s = {1, 2, 3} # リテラルからセットを生成
s = set([1, 2, 3]) # リストからセットを生成
s = set((1, 2, 3)) # タプルからセットを生成
s = set('abc') # 文字列からセットを生成 => {'a', 'b', 'c'}
s = set({'a':1, 'b':2}) # ディクショナリのキーからセットを生成 => {'a', 'b'}
set リテラルを表現するときの記号には、dictionary と同様に {
と }
を使用します。
空の set リテラルを定義しようとして {}
と記述してしまうと、空の dictionary とみなされてしまうので、set()
コンストラクタを使用しなければいけないことに注意してください。
set.add()
メソッドで、set に要素を追加することができます。
すでに存在する要素を追加しようとした場合は、何も起こりません。
s = {1, 2, 3}
s.add(3)
s.add(4)
s.add(5)
print(s) #=> {1, 2, 3, 4, 5}
set.remove()
メソッドで、指定した要素を set オブジェクトから削除することができます。
s = {1, 2, 3}
s.remove(2)
print(s) #=> {1, 3}
ただし、set.remove()
メソッドは、存在しない要素を削除しようとすると KeyError が発生する ことに注意してください。
s = {1, 2, 3}
s.remove(4) # KeyError
s.discard(4) # OK(何も起こらない)
list や tuple と同様に、set が指定した要素を保持しているかどうかを調べるには、in
キーワードを使用します。
s = {'aaa', 'bbb', 'ccc'}
if 'bbb' in s:
print('OK')
list や tuple と同様に、set が保持する要素は for-in
によってループ処理することができます。
s = {30, 10, 20}
for x in s:
print(x)
ソートして取り出したい場合は、一度 sorted()
関数に渡してソートされた list に変換してからループ処理します。
s = {30, 10, 20}
for x in sorted(s):
print(x)