我有一个像这样的嵌套列表:
values = [['DNO', 0.2], ['Equinor', 0.4], ['Petoro', 0.2], ['Total', 0.2]]
如何获得总和(每个子列表的第二个元素)大于 0.5 的所有可能的元素组合?
这就是我正在使用的:
def getCombinations(values, min_len):
combo = "\n"
numbers = []
doc = {}
for val in values:
doc[val[0]] = val[1]
numbers.append(val[1])
result = [seq for i in range(len(numbers), 0, -1) for seq in itertools.combinations(numbers, i) if sum(seq) >= 0.5]
temp = doc.copy()
for r in result:
doc = temp.copy()
if len(r) >= min_len:
for rr in r:
combo = combo + get_key(doc, rr) + " "
doc.pop(get_key(doc, rr))
combo = combo + "\n"
return combo
当上面列表中有多个值(例如 0.2)时,我的算法会出现一些问题。
目前它返回的是min_length=3:
Total Equinor Petoro DNO
Total Equinor Petoro
Total Equinor Petoro
Total Petoro DNO
Equinor Total Petoro
月关宝盒
jeck猫
相关分类