我有一本看起来像这样的python字典:

dict = { '1': 0.002, '2': 0.211, '3': 0.574 .....(a lot of values) }


我正在寻找一种找到哪个数字总和等于特定数字的好方法。

另外,我想添加选择要计算多少个数字的功能。

例如,如果我输入("0.213", 2),该函数将返回'1', '2'

最佳答案

您将不得不通过所有可能的组合来蛮力拼搏。 itertools.combinations的目的是:

import itertools
for comb in itertools.combinations(d.keys(), r):
    if sum(d[k] for k in comb) == target:
        return comb  # or add to a result list, if you want them all


其中d是您的字典,r是要选择的值数,而target是目标值。

尽管在比较浮点数时使用==可能不是一个好主意。自行决定使用。

10-06 01:43