type_dict[‘文件夹’]+= 1 要达到什么目的?
第30课后作业第一题,按我个人的理解,对参考答案进行了标注(如下),但对其中的 type_dict[‘文件夹’]+= 1 的作用,理解不了。如果是计数的话,上一句type_dict.setdefault(‘文件夹’,0)中的0不该是1吗?type_dict[‘文件夹’] += 1 的作用是啥?
请高手指教!
import os
all_files = os.listdir(os.curdir)#当前文件夹下有哪些和子目录
type_dict = dict()#建一个字典,空的
for each_file in all_files:
if os.path.isdir(each_file): #判断一个路径是否存在且是一个目录,
#是目录,说明是一个文件夹,不是文件
type_dict.setdefault('文件夹',0) #字典中没有键(文件夹),所以添加一个项,并返回值0
type_dict['文件夹']+= 1 #这一句是计数的功能吗?要迭代出“文件夹”的数量?
#如果是,上一句的0不应该是1吗?
else:
ext = os.path.splitext(each_file) #有扩展名的文件,分离文件名和扩展名
#返回一个元组(f_name,f_extension),把元组的第二个元素(扩展名)切割出来
type_dict.setdefault(ext,0) #在字典里增加切出来的扩展名,并赋值
type_dict+= 1 #对字典中每个ext 如是操作
for each_type in type_dict.keys(): #把字典里的键找出来形成一个列表,对每一个键(包含文件夹和文件)操作
print('该文件夹下共有类型为[%s]的文件%d个'%(each_type,type_dict))
#%s格式化字符串,d%格式化整数,%s加中括号的意思让显示结果更醒目,中括号也可以去掉。 本帖最后由 jackz007 于 2020-12-30 11:22 编辑
就是把文件夹也作为一种独立的文件类型,对目录内的文件夹单独进行计数。
type_dict.setdefault('文件夹',0) # 如果字典中没有键名为 '文件夹' 的项,那就添加一个,并设置其初始键值为 0 ;如果已经存在,则可忽略此句。
type_dict['文件夹']+= 1 # 对键名为 '文件夹' 的项的键值加 1 本帖最后由 周游世界LEON 于 2020-12-30 12:33 编辑
jackz007 发表于 2020-12-30 11:16
就是把文件夹也作为一种独立的文件类型,对目录内的文件夹单独进行计数。
jackz007 发表于 2020-12-30 11:16
就是把文件夹也作为一种独立的文件类型,对目录内的文件夹单独进行计数。
谢谢提示,我想明白了,以下注释是我的思路
type_dict.setdefault('文件夹',0) #字典中没有键(文件夹),所以添加一个项,并赋值0;
#这里利用了setdefault()的特点:当下一次循环时,如果字典里存在该KEY,返回
它的对应的值。即使又设立了当前默认值(0),也不会改变原值(比如1,下一句的产生的值)
相当于,如果键已经存在,忽略此句。
type_dict['文件夹']+= 1 #对”文件夹“这个项返回的值+1,表示开始计数了……这就是要实现计数功能
页:
[1]