如何使用循环而不使用正则表达式来解决这个问题?
编写一个函数,该函数接受文件名列表并返回一个字典,其中扩展名作为键,其出现次数作为值。
示例:
#print(count_file_types([“image1.jpg”, “image2.jpg”, “preso.pptx” ]))
#=> {“jpg”: 2, “pptx”: 1}
我尝试过这个,但我想这都是错的:
def count_file_types(string_arr):
arr = []
for i in string_arr:
arr.append(i.split("."))
return(arr)
print(arr)
freq = {}
for i in arr:
if i in freq:
freq[i] += 1
else:
freq[item] = 1
return freq
print(freq)
print(count_file_types(['image1.jpg', 'image2.jpg', 'preso.pptx']))
您可以使用
pathlib.Path
和 collections.Counter
来执行此操作。
from pathlib import Path
from collections import Counter
def count_ext(file_list: list[str]):
return dict(Counter(Path(f).suffix.lstrip('.') for f in file_list))