同じハッシュを持たせる
CustomClass('name')とCustomClass('名前')のインスタンスは、同じハッシュを生成し、集合型で操作したときに唯一となるようにしたい。
def custom_hash(string):
string_groups = [
{'name', '信号', 'Name'},
{'min', '最小値'}
]
for group in string_groups:
if string.lower() in group:
return hash(frozenset(group)) # ハッシュ値を生成
return hash(string) # デフォルトのハッシュ値を生成
hashは整数値。
共通要素を持たない判定
set.isdisjoint(other)
部分集合
set.issubset(other)
set <= other
set < other上位集合
issuperset(other)
set >= other
set > other和集合
# 新しい集合を返す
set.union(*others)
set | other | ..
# 集合を更新する
set.update(*others)
set |= other | ..演算子のものは集合しか受け付けない。メソッドのものはイテラブルのものであれば可能。
積集合
# 新しい集合を返す
set.intersection(*others)
set & other & ..
# 集合を更新する
set.intersection_update(*others)
set &= other & ..演算子のものは集合しか受け付けない。メソッドのものはイテラブルのものであれば可能。
差集合
# 新しい集合を返す
set.difference(*others)
set - other - ..
# 集合を更新する
set.difference_update(*others)
set -= other - ..演算子のものは集合しか受け付けない。メソッドのものはイテラブルのものであれば可能。
排他集合
# 新しい集合を返す
set.difference(*others)
set ^ other ^ ..
# 集合を更新する
set.symmetric_difference_update(*others)
set ^= other ^ ..演算子のものは集合しか受け付けない。メソッドのものはイテラブルのものであれば可能。
要素の操作
set.add(elem)
set.remove(elem)
set.discard(elem)
set.pop()
set.clear()