Уведомления

Группа в Telegram: @pythonsu

#1 Июль 20, 2016 18:07:10

ivangeraskin
Зарегистрирован: 2015-03-31
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с кортежем tuple

Есть некоторый набор продуктов: 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. Буду благодарен за помощь!

Офлайн

#2 Июль 21, 2016 03:18:49

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9727
Репутация: +  843  -
Профиль   Отправить e-mail  

Работа с кортежем tuple

Используй теги кода. Приведи пример нормально, ничего не понятно.



Онлайн

#3 Июль 27, 2016 08:53:10

scidam
Зарегистрирован: 2016-06-15
Сообщения: 288
Репутация: +  35  -
Профиль   Отправить e-mail  

Работа с кортежем tuple

Если правильно понял, что нужно что-то вроде этого:

 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)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version