result = {'a': 30, 'b': 88, 'c': 100, 'd': 90,"e":60}
key = 180
result 中任意字典组合找出 满足并接近key的组合
麻烦各位了
result = {'a': 30, 'b': 88, 'c': 100, 'd': 90,"e":60}
key = 180
result 中任意字典组合找出 满足并接近key的组合
麻烦各位了
import itertools
def sums():
li = []
li_group = []
li_dic = {}
result = {'a': 30, 'b': 88, 'c': 100, 'd': 90, "e": 60}
key = 180
for key1 in result.keys():
li.append(key1)
for j in range(1,len(li)+1):
for i in itertools.combinations(li,j):
li_group.append(list(i))
for li_value in li_group:
count = 0
key_v=''
for v in li_value:
key_v += v + '+'
count = count + result[v]
li_dic[key_v[:-1]]= abs(count-key)
li_sort =sorted(li_dic.items(),key=lambda item:item[1])
print(li_sort)
sums()
替换字典和值就行了