Форум сайта python.su
Есть некоторый набор продуктов: prod1, prod2, prod3, … prod20. Если комбинация продуктов была в одном чеке, то она записана как ключ в словаре dict со значением, равным количеству чеков, в которые входила данная комбинация.
product_dict = {('prod1','prod2'):2000, ('prod2','prod5'):3500, ('prod1','prod5'):1500, ('prod1','prod2','prod5'):300, …}.
Нужно для произвольного ключа размера 3 и более реализовать цикл, проходящий по каждому продукту в ключе, считающий отношение значения рассматриваемого ключа к ключу с выкинутым продуктом. Приведу пример для ключа размера 3:
product_set = ('prod1','prod2','prod5')
шаг1
print product_set/product_set
шаг2
print product_set/product_set
шаг3
print product_set/product_set
Возможно стоит воспользоваться библиотекой itertools. Буду благодарен за помощь!
Офлайн
Используй теги кода. Приведи пример нормально, ничего не понятно.
Офлайн
Если правильно понял, что нужно что-то вроде этого:
import itertools yourdict = {('t1', 't2'): 100, ('t1', 't2', 't3'): 200, ('t1', 't2', 't3', 't4'): 300, } for i, j in itertools.combinations(yourdict, 2): if len(set(i)-set(j)) == 1: print('Result for ({}, {}): {}'.format(i, j, yourdict[i] / yourdict[j])) elif len(set(j)-set(i)) == 1: print('Result for ({}, {}): {}'.format(i, j, yourdict[j] / yourdict[i]))
Отредактировано scidam (Июль 27, 2016 08:54:36)
Офлайн