Проверьте, является ли множество подмножеством, учитывая количество (кратность) каждого элемента в наборе
Я знаю, что могу проверить, является ли 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)
или способ избежать списков. Спасибо!