В основном это комбинационная программа. Он суммирует все значения в dict1 и возвращает все комбинации клавиш, которые добавляют к 100. Я хочу получить тот же результат, но я не хочу, чтобы определенные ключевые/значения были в одной и той же группе комбинаций. то есть я не хочу ключ «а», чтобы быть в любой группе комбинации с ключом «B», ключ «с» не может быть в любой группе комбинации с «D» и т.д.возврат определенных значений словаря
import itertools
dict1 = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5, 'f':6, 'g':7, 'f':8}
def matches(d, target):
# First try single items, then couples, then triplets etc.
for num in range(1,len(d)+1):
# Iterate over all possible combinations of length num
for com in itertools.combinations(d.items(), num):
# Does the sum of all second items per key/value pair match the target?
if sum(item[1] for item in com) == target:
# Yield one item at a time, so the caller can decide when to stop
yield dict(com).keys()
for match in matches(dict1, 100):
print(match)
Работает ли ваш код? Что он делает, что это не должно? Что он не делает, что нужно? Каков ваш вопрос, пожалуйста, будьте конкретны? Пожалуйста, укажите желаемый и фактический вывод для ввода примера. – wwii