字典中任意组合找出最接近固定值 的组合

result = {'a': 30, 'b': 88, 'c': 100, 'd': 90}
key = 120
result 任意组合找出最接近key的组合

麻烦各位了

img

img


先求出所有组合求和,在和key比较,求出差值,在进行排序,就能求出最接近的组合

result = {'a': 30, 'b': 88, 'c': 100, 'd': 90}
#键值交换
Res_result =dict(zip(result.values(),result.keys()))

key = 120
newList = [key-int(j) for i,j in  result.items()]
minValue = min(newList)
minKey = Res_result[key-minValue]
print("最接近固定值的组合,key={},value={}".format(minKey,key-minValue))

img

# -*- coding:utf-8 -*-

def dataUpdate(result,key):
    newDict = {}
    for k,v in result.items():
        nkey = int( key - v )
        if newDict.get(nkey):
            newDict.get(nkey).append({k:v})
        else:
            newDict[nkey] = [ {k:v} ]
    return  newDict


if __name__ == '__main__':
    result = {'a': 30, 'b': 88, 'c': 100, 'd': 90}
    key = 120
    newDict = dataUpdate(result,key)
    #对新字典的key进行排序,最小的表示最接近的结果
    newDictSort = sorted(  newDict.items() , key= lambda item:item[0] )
    newResult = newDictSort[0][1][0]
    print(newResult)
    print('最接近key={}的组合是:{}'.format( key, newResult))