У меня есть список списков, подобных этому:
listofLists = [
['a', 'b', 'e'],
['a', 'd'],
['a', 'c'],
['a', 'b', 'c', 'e'],
['a', 'e', 'c', 'f']
]
Как я могу читать этот список элементов по вертикали и переименовывать дубликаты, добавляя номера к элементу в инкрементном порядке? Список вывода должен сохранять тот же порядок.
Например, первая позиция 'e' находится в индексе 1 в списке ['a', 'e', 'c', 'f'] должно остаться как есть. Следующая позиция 'e' находится в индексе 2 в списке ['a', 'b', 'e'], который должен быть переименован в 'e1'. Последняя позиция 'e' находится в списке ['a', 'b', 'c', 'e'], который должен быть переименован в 'e3'
Требуемый вывод должен быть:
requiredOutput = [['a', 'b', 'e1'],
['a', 'd'],
['a', 'c'],
['a', 'b', 'c1', 'e2'],
['a', 'e', 'c1', 'f']]
Код, который я пробовал, приведен ниже, сверяя с транспонированным списком. Но это не дает мне требуемого вывода, так как мой код изменяет текущий элемент списка. Я не знаю, правильный ли это подход к постановке задачи.
transformedListOfTuples = list(zip_longest(*listofLists))
transformedListOfList= [list(x) for x in transformedListOfTuples]
for i in range(0, len(listofLists)):
for j in range(0, len(listofLists[i])):
pos = -1
for z in range(0, len(transformedListOfList)):
if listofLists[i][j] in transformedListOfList[z]:
pos = pos + 1
if pos == 0:
continue
elif pos > 0:
listofLists[i][j] = listofLists[i][j] + str(pos)
elif listofLists[i][j] not in transformedListOfList[z]:
continue