鱼C论坛

 找回密码
 立即注册
查看: 1562|回复: 3

[已解决]type_dict[‘文件夹’]+= 1 要达到什么目的?

[复制链接]
发表于 2020-12-30 11:05:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
第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)[1]     #有扩展名的文件,分离文件名和扩展名
                                                              #返回一个元组(f_name,f_extension),把元组的第二个元素(扩展名)切割出来
        type_dict.setdefault(ext,0)                #在字典里增加切出来的扩展名,并赋值
        type_dict[ext]+= 1                         #对字典中每个ext 如是操作

for each_type in type_dict.keys():      #把字典里的键找出来形成一个列表,对每一个键(包含文件夹和文件)操作
    print('该文件夹下共有类型为[%s]的文件%d个'%(each_type,type_dict[each_type]))
    #%s格式化字符串,d%格式化整数,%s加中括号的意思让显示结果更醒目,中括号也可以去掉。
最佳答案
2020-12-30 11:16:29
本帖最后由 jackz007 于 2020-12-30 11:22 编辑

         就是把文件夹也作为一种独立的文件类型,对目录内的文件夹单独进行计数。
        type_dict.setdefault('文件夹',0)      # 如果字典中没有键名为 '文件夹' 的项,那就添加一个,并设置其初始键值为 0 ;如果已经存在,则可忽略此句。
        type_dict['文件夹']+= 1               # 对键名为 '文件夹' 的项的键值加 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-12-30 11:16:29 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2020-12-30 11:22 编辑

         就是把文件夹也作为一种独立的文件类型,对目录内的文件夹单独进行计数。
        type_dict.setdefault('文件夹',0)      # 如果字典中没有键名为 '文件夹' 的项,那就添加一个,并设置其初始键值为 0 ;如果已经存在,则可忽略此句。
        type_dict['文件夹']+= 1               # 对键名为 '文件夹' 的项的键值加 1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-30 12:22:09 | 显示全部楼层
本帖最后由 周游世界LEON 于 2020-12-30 12:33 编辑
jackz007 发表于 2020-12-30 11:16
就是把文件夹也作为一种独立的文件类型,对目录内的文件夹单独进行计数。


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-30 12:58:16 | 显示全部楼层
jackz007 发表于 2020-12-30 11:16
就是把文件夹也作为一种独立的文件类型,对目录内的文件夹单独进行计数。


谢谢提示,我想明白了,以下注释是我的思路
type_dict.setdefault('文件夹',0)   #字典中没有键(文件夹),所以添加一个项,并赋值0;
                                        #这里利用了setdefault()的特点:当下一次循环时,如果字典里存在该KEY,返回
                      它的对应的值。即使又设立了当前默认值(0),也不会改变原值(比如1,下一句的产生的值)
                      相当于,如果键已经存在,忽略此句。
type_dict['文件夹']+= 1   #对”文件夹“这个项返回的值+1,表示开始计数了……这就是要实现计数功能
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 20:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表