我有项目清单:
['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循环中,我在通过verIndex引用的每个文件夹上使用os.list.我相信问题是正在为搜索到的每个文件夹生成一个列表,但我希望将所有搜索合并到一个列表中,然后再通过groupby和排序操作.