[英]Building dictionary from list using for loop in Python
我的目錄中有多個格式文件。 我正在嘗試建立一個列表或字典,以使用for循環將python中類似格式的文件(擴展名)分組,但是以某種方式無法正常工作。
這是我的示例代碼:
extension = ['pdf','xlsx','doc']
file_name_path=[]
file_dict ={}
for i in range(len(extension)):
for file_name in filelst:
if os.path.splitext(file_name)[-1] == extension[i]:
file_name_path.append(file_name)
file_dict[str(extension[i])]= file_name_path
file_name_path
file_dict
其中filelst是具有所有文件名的列表,例如
filelst =
['PD_CFS_PLL_OnMonSummary_2017Q2.xlsx',
'PD_Detailed_OMR_PLL_Lines_2017Q2.xlsx',
'PD_Detailed_OMR_PLL_Loans_2017Q2.xlsx',
'regexp-tip-sheet.pdf',
'SAS statistical-business-analyst certification .pdf']
獲取擴展名為鍵的字典的替代方法
extension = ['.pdf','.xlsx','.doc']
filelist = ['one.pdf','two.pdf','three.doc','four.xlsx'] #just for example
d = dict()
for i in extension:
d[i] = [j for j in filelist if os.path.splitext(j)[-1].lower()==i]
print(d)
輸出:
{'.doc': ['three.doc'], '.xlsx': ['four.xlsx'], '.pdf': ['one.pdf', 'two.pdf']}
請注意,我在擴展列表中使用點作為os.path.splitext
返回列表,最后一個元素為'.extension'
。 .lower()
用於使此解決方案不區分大小寫, extension
列表中的字符串必須僅包含小寫字符。
每次看到相同的鍵都將覆蓋字典值。
而是使用列表作為值並附加。 這就是defaultdict
目的。
從集合導入defaultdict
extension = ['pdf','xlsx','doc']
file_dict = defaultdict(list)
for file_name in filelst:
ext = os.path.splitext(file_name)[-1].lower()
if ext in extension:
file_dict[ext].append(file_name)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.