El 8 de febrero de 2018, 23:26, Manuel A. Estevez Fernandez < stvz...@gmail.com> escribió:
> Hola gracias por tu sugerencia. > > Lo que necesito es por ejemplo: > > para el ID 1 el target es 100, > > entonces ¿cuáles son los números del ID 1 que puedan sumar 100 ? > 20, 30, 50, 15, 45, 60 > 20 + 30 + 50 = 100 > Sin conocer la naturaleza de los datos, para una primera aproximación se podrían obtener todas las combinaciones posibles de los valores y comprobar si alguna suma el valor objetivo: from itertools import combinations combs = (lst for n in range(1, len(valores)) for lst in combinations(valores, n) if sum(lst)==target) res = next(combs, None) Obtienes la primera combinación que sume el valor objetivo, o None si no encuentra ninguna combinación. Se puede pensar alguna optimización más del algoritmo según si los datos están ordenados o si supieras en qué rango se mueven. En cuanto a usar procesos, es fácil particionar el problema agrupando los datos por ID (ya lo tienes hecho para generar el diccionario). El módulo multiprocessing facilita mucho las cosas (Ahora no tengo tiempo para ponerte un ejemplo). -- Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": http://ch3m4.org/blog Buscador Python Hispano: http://ch3m4.org/python-es
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es