Gegeben aList
als:Subset Summe für eine Liste mit dict
[
{'name': 'Hailey', 'age': 20, 'id': 48479},
{'name': 'John', 'age': 40, 'id': 18021},
{'name': 'Asger', 'age': 18, 'id': 22281},
]
und einer gegebenen Zielsumme als targetSum = 50
.
Das Problem ist durch aList
mit dem Schlüssel age
zu suchen, dann Elemente aus aList
entfernen, die für age
Wert ist nicht gleich (ungefähr) targetSum
kombiniert werden. Die Elemente, die zu (ungefähr) targetSum
kombiniert werden können, sollten durch ihre id
in einer Liste abrufbar sein.
Alternativ zur Vermeidung der Entfernung der Elemente besteht das Problem einfach darin, alle möglichen Kombinationen der gegebenen Elemente zu finden, die ein age
Attribut haben, das (ungefähr) zu targetSum
aufsummiert.
Ich habe die Funktion zum Finden einer Teilmenge in einer Liste, um Summe zu geben. Allerdings ist die Beschränkung, dass es nur eine Liste von Zahlen so [1, 2, 3, 4, ...]
anstelle von Wörterbüchern dauert.
def subsetInListForSum(numbers, target):
results = []
for x in range(len(numbers)):
results.extend(
[
combo for combo in combinations(numbers ,x)
if sum(combo) == target
]
)
print(results)
Jede Hilfe sehr würde sehr geschätzt :)
'len (Zahlen)' sollte 'len (1, Zahlen + 1)' sein. Ansonsten ist 'combinations (numbers, x)' nichts. – SparkAndShine