У меня есть 15 dicts, как следующие 3 (все 15 имеют разную длину). Например:Сочетания нескольких dicts python
HQDict = {'HQ1':10, 'HQ2':3, 'HQ3':5}
BADict = {'BA1':15, 'BA2':4, 'BA3':3}
STDict = {'ST1':5, 'ST2':4, 'ST3':3}
Я хочу, чтобы создать все возможные комбинации 15 dicts только с одним элементом, выбранным из каждого Словаря со значениями суммироваться, и ключами, хранящихся в списке. Я смог получить всю информацию в соответствующих dicts, но я не знаю, с чего начать с комбинаций, я видел itertools.combinations, но я не уверен, как сделать это, только выберите один элемент из каждого dict. Если вам нужна дополнительная информация, пожалуйста, спросите, и я с удовольствием отредактирую.
Edit1: Я также необходимо добавить, что значения являются аддитивными, так значение BA2 будет значение БА1 + BA2 и что комбинация может быть список 1.
list=[HQ1,BA2,ST1]
value=34
next permutation
list=[HQ2]
value=13
Edit2:
Вместо того, чтобы пытаться создать комбинации dicts, конечной целью является дать функции общее количество и она вернет все возможные комбинации зданий (каждый dict представляет собой здание и каждый элемент в dict level), которые добавляют до этого. Так, например:
combinations(34) would return
[HQ1,BA2,ST1]
and combinations(13 would return
[HQ2]
Pastebin в файл, содержащий все здания и код им с помощью создать dicts: link to pastebin
Это выглядит очень похоже на [проблему рюкзака] (https://en.wikipedia.org/wiki/Knapsack_problem) –
Спасибо за ссылку, когда я начал смотреть вокруг проблема ранца Я тогда нашел проблему подмножества сумм, и это выглядело больше, чем я был, поскольку проблема с рюкзаком искала оптимальные решения, однако я был после точных решений. https://en.m.wikipedia.org/wiki/Subset_sum_problem –