嗨,我正在编写这个程序,它根据文件的扩展名(.exe, .py, .docx)将文件组织到字典中,我现在使用的方法使用嵌套循环来做这件事。问题是,我需要循环到程序找到的所有扩展名的列表中,并检查所有具有相同扩展名的文件所在的文件列表,然后将对应的文件放入字典中,放在正确的键下。我目前的方法有效,但我想知道是否有任何方法可以提高程序的时间复杂度。
下面是所有代码:
from os import path, listdir, mkdir
import shutil
def main():
files = listdir()
extentions = []
grouped = {}
# Filter out folders from the files
for file in files:
if path.isdir(file):
files.pop(files.index(file))
continue
# Get the extentions of the files for creating the folders
for file in files:
extention = file.split(".")[-1]
if extention not in extentions:
extentions.append(extention)
# Organize files based on their extentions
for extention in extentions:
grouped[extention] = []
for file in files: # This is the important part
if file.endswith(extention):
grouped[extention].append(file)
print(files)
print(extentions)
print(grouped)
if __name__ == '__main__':
main()
复杂度0 (n), n -当前目录下的文件个数。
from os import path, listdir
from collections import defaultdict
def main():
files = listdir()
grouped = defaultdict(list)
for file in files:
if path.isfile(file):
extention = file.split(".")[-1]
grouped[extention].append(file)
print(files)
print(grouped)
print(grouped.keys()) # if you need extensions
if __name__ == '__main__':
main()