首页 > 解决方案 > 如何追溯字典的键?

问题描述

我创建了一个有序字典,有助于保持 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) 的组合?

标签: pythondictionaryfor-loop

解决方案


也许:

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

然后你可以在字典中查找键的值。

关键参数是一个函数,它接受一个参数,一个包含两个项目的元组,并将该元组应用于一个接受两个位置参数的函数,方法是使用 splat 运算符将元组的项目解包为两个位置参数


推荐阅读