我有一個包含檔案名的串列,除了時間戳字串部分外,其中一些幾乎相同。該串列的格式為 [name-subname-timestamp] 例如:
myList = ['name1-001-20211202811.txt', 'name1-001-202112021010.txt', 'name1-002-202112021010.txt', 'name2-002-202112020811.txt']
我需要的是一個包含每個名稱和子名稱的串列,即由時間戳派生的最新檔案。我首先創建了一個包含每個 [name-subname] 的串列:
name_subname_list = []
for row in myList:
name_subname_list.append((row.rpartition('-')[0]))
name_subname_list = set(name_subname_list) # {'name1-001', 'name2-002', 'name1-002'}
不確定這是否是正確的方法,而且我不確定如何繼續。有任何想法嗎?
uj5u.com熱心網友回復:
此代碼是您要求的:
對于每個名稱-子名稱,您將擁有相應的最新檔案:
from datetime import datetime as dt
dic = {}
for i in myList:
sp = i.split('-')
name_subname = sp[0] '-' sp[1]
mytime = sp[2].split('.')[0]
if name_subname not in dic:
dic[name_subname] = mytime
else:
if dt.strptime(mytime, "%Y%m%d%H%M") > dt.strptime(dic[name_subname], "%Y%m%d%H%M"):
dic[name_subname] = mytime
result = []
for name_subname in dic:
result.append(name_subname '-' dic[name_subname] '.txt')
結果resutl如下:
['name1-001-202112021010.txt',
'name1-002-202112021010.txt',
'name2-002-202112020811.txt']
uj5u.com熱心網友回復:
嘗試這個:
myList = ['name1-001-20211202811.txt', 'name1-001-202112021010.txt', 'name1-002-202112021010.txt', 'name2-002-202112020811.txt']
dic = {}
for name in myList:
parts = name.split('-')
dic.setdefault(parts[0] '-' parts[1], []).append(parts[2])
unique_list = []
for key,value in dic.items():
unique_list.append(key '-' max(value))
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/372457.html
