Как отследить ключи словаря? - PullRequest
0 голосов
/ 17 февраля 2019

Я создал упорядоченный словарь, помогающий умножать каждую комбинацию из 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 голосов
/ 17 февраля 2019

Возможно:

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

Тогда вы можете просто посмотреть значения ключей в словаре.

Ключевым аргументом является функция, которая принимает один аргумент, кортеж из двухitems и применяет этот кортеж к функции, которая принимает два позиционных аргумента, используя оператор splat для распаковки элементов кортежа как двух позиционных аргументов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...