我有一本看起来像这样的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
是目标值。尽管在比较浮点数时使用
==
可能不是一个好主意。自行决定使用。