2018-11-24派森学习第6天

()今天要解决昨天出现的递归程序在没有获取当前文件夹下所有文件的大小便直接跳进子文件夹从而遗漏文件的BUG。

想到可以把当前文件夹中的文件和子文件夹进行排序,把所有文件都放在子文件夹的前面,这样程序就可以避免程序过早地进入子文件夹。

昨天写了排序的语句,但是不知道为什么达不到目的。重新写了一个排序的函数,发现只输出了一个文件,仔细程序发现,在每一次for循环后,count,ordered都被清空,所以最后结果只打印出一个文件。

变量声明应在for之前

修改变量声明在for之前,发现可以实现把子文件夹排列到最后的目的。

实现文件和子文件夹排序

据此,发现昨天的程序也是错在这里。修改之后,得到所有文件的大小,保存在字典中。

得到保存所有文件的大小的字典

得到字典后,下一步就是根据字典的值,对键排序。

字典索引错误

自己写的遍历字典排序的程序,总是出错,网上找了按照字典的值排序的方法,成功。

lambda1行程序 实现 字典的值排序

在这个过程中,要注意的是,sorted()对字典操作之后,字典中的顺序仍然不变,只是sorted()的返回值中排序改变。

lambda为匿名函数,x,y相当于传入的参数,整个函数会返回x-y的值。lambda作为一个表达式,定义了一个匿名函数。代码中x,y为入口参数,x-y为函数体。在这里lambda简化了函数定义的书写形式。

匿名函数使用

对sorted中的 key = lambda x:x[1]不理解,尝试元组例子:

元组例子

发现key = lambda x:x[1]只是表达一个索引,即表示按照被排序的对象的第几个元素排序。如x:x[0],则是对字典中的'键'排序;

x:x[1],则是对字典中的'值'排序。

字典例子


列表list中居然还可以保存元组turple:

list中的turple

成功实现打印:

实现按照文件大小排序

元组:

元组基础
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 9,047评论 0 2
  • 写在前面: 安卓党。app控重度患者。 经常下载了一堆好像好有意思但是再也不会打开的app,后来渐渐明白与其盲目追...
    六秀阅读 22,593评论 191 849
  • 在双鱼星座周期里出生的我,有点偏执,自认为注定与猫有捋不清的情愫! 1.8大长腿姐姐家的猫父子 这是一对并不认识的...
    知小鱼之鱼小知阅读 1,513评论 1 1
  • 昨晚睡前,和孩子们计划好第二天上午的安排。 八点起床,八点半出发,九点到丹丹阿姨家送纸,和好朋友玩耍一小时。十点出...
    sunfeng0912阅读 2,817评论 2 4
  • 在藏区里来了, 到处能看到五色旗帜, 迎风都是简朴, 在藏家里住下了, 漫天都是纯白月光, 随处都是安稳。 201...
    金真的真阅读 1,166评论 0 0

友情链接更多精彩内容