我有一个类似这样的python字典:
dict = { '1': 0.002, '2': 0.211, '3': 0.574 .....(a lot of values) }
我正在寻找找到哪些数字总和等于特定数字的好方法。
另外,我想添加选择要计算的数量的功能。
例如,如果我输入("0.213", 2)
,该函数将返回'1', '2'
。
答案 0 :(得分:3)
你必须通过所有可能的组合蛮力。 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
是目标值。
虽然在比较浮点数时使用==
可能不是一个好主意。请自行决定使用。