如果我有一本字典{A:12,B:3,C:14,D:15,E:21,F:9,G:16}以及一个接受列表并根据if组编号的功能他们添加到30.我希望我的输出是与该组对应的键的列表: [A,B,D] [C,G] [E,F](这些键的所有值加起来为30)
到目前为止,我已经将字典分成两个列表,然后在函数之后将它们拉回来,但是我丢失了订单,一切都散了。
答案 0 :(得分:0)
我会针对不同的r
值多次使用itertools.combinations()
来获取所有可能长度的组合。然后,如果总和为30,我会对这些值求和并收集结果:
from itertools import combinations
d = {'A':12, 'B':3, 'C':14, 'D':15, 'E':21, 'F':9, 'G':16}
result = []
for l in range(2, len(d)):
for x in combinations(d.items(), l):
keys = []
sum_values = 0
for key, value in x:
keys.append(key)
sum_values += value
if sum_values == 30:
result.append(keys)
print(result)
打印:
[['F', 'E'], ['C', 'G'], ['A', 'B', 'D']]