Cómo obtener el recuento de tuplas personalizadas en dos listas

Por favor, ayúdeme a obtener el contador para la lista SS2 en la lista SS1 en PYTHON usando desde el contador de importación de colecciones o cualquier otra forma más rápida

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)] SS2=[(1, 2, 3), (1, 2, 4), (1, 2, 5), (1, 2, 6), (1, 3, 4), (1, 3, 5), (1, 3, 6), (1, 4, 5), (1, 4, 6), (1, 5, 6), (2, 3, 4), (2, 3, 5), (2, 3, 6), (2, 4, 5), (2, 4, 6), (2, 5, 6), (3, 4, 5), (3, 4, 6), (3, 5, 6), (4, 5, 6)] 

Esto es lo que he intentado y no sé cómo obtener el recuento de (1,2,4) th elementos de cada tupla

 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[0:6]) for k, v in c.items(): if (v > 0): print(k,v) 

Ahora esto se está ejecutando perfecto para 0: 3, pero lo que quiero es obtener la cuenta para no 1,2,3, pero quiero para 1,2,4 la cuenta de elementos para cada tupla.

Lo siento, chicos, espero que comprendan mi pregunta … lo siento otra vez, soy nueva esta python.

Ok, estoy asumiendo lo que quieres como tu salida aquí ya que no estabas claro. Básicamente, lo que quieres es encontrar el recuento de elementos en SS1 en SS2.

Ej. El número de veces (1,4,5) ocurren en SS1.

Lo que sería 3, es decir, en (1, 2, 3, 4, 5) , (1, 2, 4, 5, 6) , (1, 3, 4, 5, 6)

entonces para (1, 2, 5) sería 3 otra vez, ¿verdad? presente en (1, 2, 3, 4, 5),(1, 2, 3, 5, 6),(1, 2, 4, 5, 6)

Creo que lo que podrías necesitar es.

 set(tuple2).issubset(tuple1) 

Así que aquí hay un código para 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)] SS2=[(1, 2, 3), (1, 2, 4), (1, 2, 5), (1, 2, 6), (1, 3, 4), (1, 3, 5), (1, 3, 6), (1, 4, 5), (1, 4, 6), (1, 5, 6), (2, 3, 4), (2, 3, 5), (2, 3, 6), (2, 4, 5), (2, 4, 6), (2, 5, 6), (3, 4, 5), (3, 4, 6), (3, 5, 6), (4, 5, 6)] count=0 count_list = [] for ss2item in SS2: for ss1item in SS1: if set(ss2item).issubset(ss1item): count+=1 count_list.append(count) count=0 print(count_list) 

Su salida sería una lista de conteo para cada elemento en SS2:

 [3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3] 

crédito a @Chiheb Nexus

 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, (2,))) elm_counter(elm) print('---') elm = list(get_new_list(SS1, (0, 2, 3))) elm_counter(elm) print('---') elm = list(get_new_list(SS1, (1, 3, 4))) elm_counter(elm)