Python,在字典中查找与规则匹配的组件

时间:2015-04-21 16:52:01

标签: python list dictionary sum

我有一个类似这样的python字典:

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

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

另外,我想添加选择要计算的数量的功能。

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

1 个答案:

答案 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是目标值。

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