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

Responder a