У меня есть списки предметов:
['MRS_103_005_010_BG_001_v001',
'MRS_103_005_010_BG_001_v002',
'MRS_103_005_010_FG_001_v001',
'MRS_103_005_010_FG_001_v002',
'MRS_103_005_010_FG_001_v003',
'MRS_103_005_020_BG_001_v001',
'MRS_103_005_020_BG_001_v002',
'MRS_103_005_020_BG_001_v003']
Мне нужно определить последнюю версию каждого предмета и сохранить ее в новом списке.Возникли проблемы с моей логикой.
Основываясь на том, как это было построено, я считаю, что мне нужно сначала сравнить индексы друг с другом.Если я нахожу совпадение, я проверяю, какое число больше.
Я решил, что сначала мне нужно проверить, совпадают ли имена папок между текущим и следующим индексами.Я сделал это, сделав две переменные, 0 и 1, для представления индекса, чтобы я мог сделать пошаговое инкрементальное сравнение списка для себя.Если два индекса совпали, мне нужно было проверить номер vXXX в конце.какой бы из них был самый высокий, он будет добавлен в новый список.
Я подозреваю, что проблема заключается в том, что одна копия списка попадает в пустой индекс раньше, чем другой, но я не уверен, как компенсироватьдля этого.
Опять же, я не программист по профессии.Любая помощь будет оценена!Спасибо.
# Preparing variables for filtering the folders
versions = foundVerList
verAmountTotal = len(foundVerList)
verIndex = 0
verNextIndex = 1
highestVerCount = 1
filteredVersions = []
# Filtering, this will find the latest version of each folder and store to a list
while verIndex < verAmountTotal:
try:
nextVer = (versions[verIndex])
nextVerCompare = (versions[verNextIndex])
except IndexError:
verNextIndex -= 1
if nextVer[0:24] == nextVerCompare[0:24]:
if nextVer[-3:] < nextVerCompare [-3:]:
filteredVersions.append(nextVerCompare)
else:
filteredVersions.append(nextVer)
verIndex += 1
verNextIndex += 1
Мой ожидаемый вывод:
print filteredVersions
['MRS_103_005_010_BG_001_v002', 'MRS_103_005_010_FG_001_v003']
['MRS_103_005_020_BG_001_v003']
Фактический вывод:
print filteredVersions
['MRS_103_005_010_BG_001_v002', 'MRS_103_005_010_FG_001_v002',
'MRS_103_005_010_FG_001_v003']
['MRS_103_005_020_BG_001_v002', 'MRS_103_005_020_BG_001_v003']
Во время цикла with я использую os.listна каждую папку, на которую ссылается verIndex.Я полагаю, что проблема заключается в том, что создается список для каждой папки, в которой выполняется поиск, но я хочу, чтобы все поиски были объединены в один список, который ТОГДА пройдет через групповые и отсортированные действия.