python - 如何追溯字典的键?
问题描述
我创建了一个有序字典,有助于保持 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) 的组合?
解决方案
也许:
print(max([(i,j) for i in od for j in od],
key=lambda args: profit_marg_calc(*args)))
然后你可以在字典中查找键的值。
关键参数是一个函数,它接受一个参数,一个包含两个项目的元组,并将该元组应用于一个接受两个位置参数的函数,方法是使用 splat 运算符将元组的项目解包为两个位置参数
推荐阅读
- python - 如何使用excel表格获取员工ID
- javascript - 在组件初始化外部调用的函数
- html - 不透明度影响文本的 HTML CSS 背景图像
- notifications - 调用 notificationManager.clearAll() 后再次出现通知
- jquery - 如何增加jquery变量大小限制
- javascript - 使用 td 标记内的选择元素克隆表行
- flutter - 如何减慢速度,ScrollPhysics Flutter
- git - 在 git 哪里放置工具分支?
- arrays - 我正在使用 Laravel 7.x Validator 比较使用“lte”或“gte”的 2 个数组的值,但无法让它工作
- r - 查找每个工作日的平均事件