set1 が set2 のサブセットであるかどうかをテストできることはわかっています。
{'a','b','c'} <= {'a','b','c','d','e'} # True
しかし、次のことも真です。
{'a','a','b','c'} <= {'a','b','c','d','e'} # True
セット内の要素が発生する回数を考慮して、次のようにするにはどうすればよいですか。
{'a','b','c'} <= {'a','b','c','d','e'} # True
{'a','a','b','c'} <= {'a','b','c','d','e'} # False since 'a' is in set1 twice but set2 only once
{'a','a','b','c'} <= {'a','a','b','c','d','e'} # True because both sets have two 'a' elements
私は次のようなことができることを知っています:
A, B, C = ['a','a','b','c'], ['a','b','c','d','e'], ['a','a','b','c','d','e']
all([A.count(i) == B.count(i) for i in A]) # False
all([A.count(i) == C.count(i) for i in A]) # True
set(A).issubset(B,count=True)
しかし、もっと簡潔なようなものや、リスト内包表記から離れる方法があるのではないかと思っていました。ありがとう!