Cool-Fella 发表于 2017-10-19 22:10:17

python 字典里在对应的键添加值 提示键不存在 求助


chakyam 发表于 2017-10-19 22:47:50

虽然不知道你为什么这样写,但是我猜测你的目的应该是为了得到当前目录下的文件类型的个数?

把你标记出错的那一步改成
currt_dirlist_dict+=1 就行了

至于报错的原因是当读取到的currt_dirlist第一个不是文件夹时比如abc.txt的时候进入else,这时候currt_dirlist_dict并没有'文件夹'这个key

新手·ing 发表于 2017-10-19 22:11:30

别发图片的。

Cool-Fella 发表于 2017-10-19 22:17:15

本帖最后由 Cool-Fella 于 2017-10-19 22:18 编辑

新手·ing 发表于 2017-10-19 22:11
别发图片的。

import os

currt_dirlist=os.listdir()
currt_dirlist_dict=dict()

for each in currt_dirlist:
    if os.path.isdir(each):
      currt_dirlist_dict.setdefault('文件夹',0)
      currt_dirlist_dict['文件夹']+=1
    else:
      extension=os.path.splitext(each)
      currt_dirlist_dict.setdefault(extension,0)
      currt_dirlist_dict['文件夹']+=1                        #问题出现在这一步

for each_key in currt_dirlist_dict:
    print('该文件下的类型为【%s】的文件%d个'%(each_key,currt_dirlist_dict))

铁棍阿童木 发表于 2017-10-19 23:18:15


出现问题的那一步,不应该写“文件夹”啊,应该是"extension"才对。
但是报错的原因跟楼上说的正好相反,因为用setdefault( )方法获取键值的时候,如果在字典中找不到对应的键时,会自动添加。

Cool-Fella 发表于 2017-10-19 23:31:53

铁棍阿童木 发表于 2017-10-19 23:18
出现问题的那一步,不应该写“文件夹”啊,应该是"extension"才对。
但是报错的原因跟楼上说的正好相反 ...

对 你说的没错
我是故意那样写的 因为我在测试程序的时候 我想试试那样的写法能不能添加值
按道理来说 不应该报错

Cool-Fella 发表于 2017-10-19 23:33:43

铁棍阿童木 发表于 2017-10-19 23:18
出现问题的那一步,不应该写“文件夹”啊,应该是"extension"才对。
但是报错的原因跟楼上说的正好相反 ...

我明白了
有可能 第一个不是 文件夹 所以那个时候 文件夹 还没创建 所以在下面添加对应的值得时候 会报错

不自律的笨鸟 发表于 2021-5-15 07:25:46

看来还有很多东西要学习啊!

不自律的笨鸟 发表于 2021-5-18 21:15:00

看来还有很多东西要学习啊!
页: [1]
查看完整版本: python 字典里在对应的键添加值 提示键不存在 求助