El 9 de febrero de 2018, 19:30, Manuel A. Estevez Fernandez <stvz...@gmail.com> escribió: > Gracias por la respuesta, al principio intenté algo así, sin embargo con > listas de 1000 / 2000 valores se vuelve muy pesado. > > >
????? > Manuel Alejandro Estévez Fernández > > > > El 9 de febrero de 2018, 7:08, Chema Cortes <pych...@gmail.com> escribió: >> >> 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 >> > > > _______________________________________________ > Python-es mailing list > Python-es@python.org > https://mail.python.org/mailman/listinfo/python-es > -- usuario linux #274354 normas de la lista: http://wiki.debian.org/es/NormasLista como hacer preguntas inteligentes: http://www.sindominio.net/ayuda/preguntas-inteligentes.html _______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es