如何追溯字典的键?

时间:2019-02-17 10:11:12

标签: python dictionary for-loop

我创建了一个有序字典,该字典有助于使2个元素的每种组合彼此相乘。键存储乘法,值存储因子。 因此,在下面的代码中,有序字典od产生:

OrderedDict([[(2,(2,1)),(3,(3,1)),(4,(2,2)),(6,(3,2))])

import collections

list = [2,3]
cost = 0.64
markup = 0.25

a = [(i*j) for i in list for j in range(1,3)] 
b = [(i, j) for i in list for j in range(1,3)] 

keys = a
values = b
d1 = dict(zip(keys, values))

od = collections.OrderedDict(sorted(d1.items())) # Ordered Dictionary

def profit_marg_calc(paid, free):  # Profit Margin Calculator
    total_cost = ((paid)+(free))*cost
    revenue = paid*2
    profit = revenue - total_cost
    profit_margin = profit/total_cost
    return profit_margin

print(max([profit_marg_calc(i,j) for i in od for j in od])) # Max Profit Margin

1.34375

当我通过传入有序字典中的值来计算最大利润率时,如何编写代码以追溯得出1.34375的因数?就像我如何显示它是有序字典中说(2,1)(3,2)的组合?

1 个答案:

答案 0 :(得分:0)

也许:

print(max([(i,j) for i in od for j in od], 
          key=lambda args: profit_marg_calc(*args)))

然后,您只需在字典中查找键的值即可。

关键参数是一个函数,它接受一个参数,即两个项的元组,然后通过使用splat运算符将元组的项作为两个位置参数解包,将该元组应用于接受两个位置参数的函数。