我创建了一个有序字典,该字典有助于使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)的组合?
答案 0 :(得分:0)
也许:
print(max([(i,j) for i in od for j in od],
key=lambda args: profit_marg_calc(*args)))
然后,您只需在字典中查找键的值即可。
关键参数是一个函数,它接受一个参数,即两个项的元组,然后通过使用splat运算符将元组的项作为两个位置参数解包,将该元组应用于接受两个位置参数的函数。