我正在尝试编写一个脚本,该脚本将采用一个项目字典,每个项目包含 0 到 10 的值的属性,并添加各种元素以选择哪些项目组合达到所需的总数。我还需要脚本来执行此操作,仅使用具有相同“插槽”的项目。
例如:
item_list = {
'item_1': {'slot': 'top', 'prop_a': 2, 'prop_b': 0, 'prop_c': 2, 'prop_d': 1 },
'item_2': {'slot': 'top', 'prop_a': 5, 'prop_b': 0, 'prop_c': 1, 'prop_d':-1 },
'item_3': {'slot': 'top', 'prop_a': 2, 'prop_b': 5, 'prop_c': 2, 'prop_d':-2 },
'item_4': {'slot': 'mid', 'prop_a': 5, 'prop_b': 5, 'prop_c':-5, 'prop_d': 0 },
'item_5': {'slot': 'mid', 'prop_a':10, 'prop_b': 0, 'prop_c':-5, 'prop_d': 0 },
'item_6': {'slot': 'mid', 'prop_a':-5, 'prop_b': 2, 'prop_c': 3, 'prop_d': 5 },
'item_7': {'slot': 'bot', 'prop_a': 1, 'prop_b': 3, 'prop_c':-4, 'prop_d': 4 },
'item_8': {'slot': 'bot', 'prop_a': 2, 'prop_b': 2, 'prop_c': 0, 'prop_d': 0 },
'item_9': {'slot': 'bot', 'prop_a': 3, 'prop_b': 1, 'prop_c': 4, 'prop_d':-4 },
}
然后,脚本需要从“item_list”dict 中选择每个“slot”使用 1 个项目的组合,以便在添加时达到预期的结果。
例如,如果期望的结果是:'prop_a': 3, 'prop_b': 3, 'prop_c': 8, 'prop_d': 0, 脚本会选择 'item_2', 'item_6' 和 'item_9',以及任何其他有效的组合。
'item_2': {'slot': 'top', 'prop_a': 5, 'prop_b': 0, 'prop_c': 1, 'prop_d':-1 }
'item_6': {'slot': 'mid', 'prop_a':-5, 'prop_b': 2, 'prop_c': 3, 'prop_d': 5 }
'item_9': {'slot': 'bot', 'prop_a': 3, 'prop_b': 1, 'prop_c': 4, 'prop_d':-4 }
'total': 'prop_a': 3, 'prop_b': 3, 'prop_c': 8, 'prop_d': 0
任何想法如何做到这一点?它不需要在 python 中,甚至不需要一个完整的脚本,但对我来说,理论上如何做到这一点的解释就足够了。我已经尝试过遍历每个组合,但这似乎很快就让我们掌握了并且无法管理。实际脚本将需要使用 20 个不同的“插槽”对大约 1,000 个项目执行此操作,每个“插槽”具有 8 个属性。
谢谢您的帮助!