Probar si set es un subconjunto, considerando el número (multiplicidad) de cada elemento en el set
Sé que puedo probar si set1 es un subconjunto de set2 con:
{'a','b','c'} <= {'a','b','c','d','e'} # True
Pero lo siguiente también es cierto:
{'a','a','b','c'} <= {'a','b','c','d','e'} # True
¿Cómo puedo hacer que tenga en cuenta el número de veces que se produce un elemento en el conjunto para que:
{'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
Sé que podría hacer algo como:
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
Pero me preguntaba si habría algo más sucinto comoset(A).issubset(B,count=True)
o una forma de mantenerse al margen de la lista de comprensiones. ¡Gracias!