集合型


同じハッシュを持たせる

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()