Поскольку у вас есть несколько индексов, которые соответствуют нескольким ключевым словам, и вы генерируете списки в new
, которые находятся в последовательности, например, в шаблоне [1, 51]
здесь 1
равно AUDIT_PARK
, но в последовательностикак [51, 10, 1]
, 1
теперь представляет RFQ_DELETED
.Вы можете использовать iter
, чтобы пройти, как вы подходите, и двигаться вперед, или взять правильный word
, который соответствует этому числу в его позиции в stuff
.Я уверен, что это может быть очищено, но это работает правильно
new = []
for L in range(0, len(stuff)+1):
for subset in itertools.combinations(stuff, L):
if sum(subset) == 10170090:
new.append(subset)
new = list(map(list, new))
for i in new:
lst = iter(list(zip(stuff, words)))
a = next(lst)
for idx, item in enumerate(i):
while True:
if item == a[0] and a[1] == 'RFQ_DELETED':
i[idx] = a[1]
break
elif item == a[0]:
i[idx] = a[1]
a = next(lst)
break
else:
a = next(lst)
print(new)
[['AGGGG', 'AUDIT + PARK', 'AUDIT + PENDING', 'PENDING'],
['AGGGG', 'AUDIT + PENDING', 'LIVE', 'PENDING'],
['AGGGG', 'AUDIT + PENDING', 'PENDING', 'RFQ_DELETED'],
['AGGGG', 'AUDIT + PARK', 'AUDIT + PENDING', 'AUDIT + QUOTE_CREATED,AUDIT + QUOTE_DELETED', 'REJECT'],
['AGGGG', 'AUDIT + PENDING', 'AUDIT + QUOTE_CREATED,AUDIT + QUOTE_DELETED', 'LIVE', 'REJECT'],
...
['AGGGG', 'AUDIT + PENDING', 'AUDIT + QUOTE_CREATED,AUDIT + QUOTE_DELETED', 'AUDIT + QUOTE_REJECTED', 'LIVE', 'QUOTE_CREATED', 'RFQ_DELETED'],
['AGGGG', 'AUDIT + PENDING', 'AUDIT + QUOTE_REJECTED', 'AUDIT + QUOTE_UPDATED', 'LIVE', 'REJECT', 'RFQ_DELETED'],
['AGGGG', 'AUDIT + PENDING', 'AUDIT + QUOTE_REJECTED', 'LIVE', 'QUOTE_CREATED', 'REJECT', 'RFQ_DELETED'],
['AGGGG', 'AUDIT + PENDING', 'AUDIT + QUOTE_REJECTED', 'LIVE', 'QUOTE_CREATED', 'REJECT', 'RFQ_DELETED']
]