一个 | 乙 | 碳 | 德 | 埃 | |
---|---|---|---|---|---|
键 1 | 1 | -1 | |||
键 2 | 1 | -1 | |||
键 3 | 1 | -1 | |||
键 4 | -1 | 1 | |||
键 5 | 1 | -1 | |||
键 6 | 1 | -1 | |||
键 7 | 1 | -1 | |||
键 8 | 1 | -2 | 1 |
最终结果
一个 | 乙 | 碳 | 德 | 埃 |
---|---|---|---|---|
1 | -1 |
假设我们有上述数据框,其中每个键都是用于创建组合以获得所需最终结果的选项。假设您还可以指定可用于实现以下最终结果的最大组合数,那么如何遍历数据框,当一组组合等于最终结果时,它会打印组成组合的所有键以及它所采用的组合数?
例如,假设最大组合数为 3 键组合。那么以下组合将满足最终结果,并且保持低于或等于允许实现该结果的按键组合数
钥匙 2(本身),连击 1
键 4 + 键 5,组合 2
键 3 + 键 8,组合 2
假设:
您可以使用
itertools
来产生组合,并使用reindex
+sum
与预期输出进行比较:输出:
请注意,这将产生 Key1/Key2/Key4 作为有效组合,因为 Key1/Key4 自我取消并且只有 Key2 有效。
为了避免这种情况,您可以跟踪产生的组合,并且只保留那些不是已经看到的有效组合的超集的组合:
输出: