obtén el recuento de elementos de tuplas de tu propia … no solo el rango o la secuencia

El siguiente código se ejecuta para los primeros tres elementos de la tupla de esta lista

SS1=[(1, 2, 3, 4, 5), (1, 2, 3, 4, 6), (1, 2, 3, 5, 6), (1, 2, 4, 5, 6), (1, 3, 4, 5, 6), (2, 3, 4, 5, 6)] from collections import Counter c = Counter(elem[0:3] for elem in SS1) for k, v in c.items(): if (v > 0): print(k,v) 

y la salida es:

 (1, 2, 3) 3 (1, 2, 4) 1 (1, 3, 4) 1 (2, 3, 4) 1 

Pero mi expectativa no es solo para las tres primeras tuplas … quiero el contador para la tupla (0,2,3) o la tupla (1,2,4) mismo modo, puedo pasar tres posiciones de la tupla y obtener el recuento de Es … ¿Cómo puedo hacer esto?

Si lo que entendí de su pregunta es correcto, el siguiente código resolverá su problema:

 SS1=[(1, 2, 3, 4, 5), (1, 2, 3, 4, 6), (1, 2, 3, 5, 6), (1, 2, 4, 5, 6), (1, 3, 4, 5, 6), (2, 3, 4, 5, 6)] from collections import Counter def get_new_list(a, pos): # Check if any element in pos is > than the length of the tuples if any(k >= len(min(SS1, key=lambda x: len(x))) for k in pos): return for k in a: yield tuple(k[j] for j in pos) def elm_counter(elm): if not len(elm): return c = Counter(elm) for k, v in c.items(): if v > 0: print(k, v) elm = list(get_new_list(SS1, (0, 2, 4))) elm_counter(elm) print('---') elm = list(get_new_list(SS1, (1, 2, 4))) elm_counter(elm) 

Salida:

 (1, 3, 5) 1 (1, 3, 6) 2 (1, 4, 6) 2 (2, 4, 6) 1 --- (2, 3, 6) 2 (2, 3, 5) 1 (3, 4, 6) 2 (2, 4, 6) 1