首页 > python基础教程> 详细内容
(36)python少儿编程之字典dict(三)
日期:2020-02-26 

defaultdict

  • 当我们使用不存在的key的时候发生KeyError这样的一个报错,那么defaultdict就可以解决这个问题
(36)python少儿编程之字典dict(三)
  • 我们申明d1的时候 去调用不存在的key‘a’ 发现报错了
  • 但是用defaultdict(int) 以后 调用‘a’ 发现不存在 他直接给新增了一个KV对,还赋值了一个默认值0
  • 这里使用注意两点 首先我们要引用集合类 和这个方法
  • from collections import defaultdict
  • collections.defaultdict([default_factory[, ...]])
  • 这里的default_factory 可以放 int.str.list 都是可以的
  • 再看一个例子
(36)python少儿编程之字典dict(三)
  • 这个例子解决的是 把字符串s的里面的字符出现次数输出
  • 首先字典解决重复问题,那么只要开始先赋值一个0,然后找到一个加一次就可以了,但是这里如果不用defaultdict的话,每次查询的时候,我们就要去找到这个key,判断是否出现过,如果没出现,还要手动新增并赋值0,复杂而麻烦,用了defaultdict以后,轻松又愉快

OrderedDict

  • OrderedDict([item])
  • 因为字典是无序的,我们每次添加进去的元素,其实并不知道会排到哪里,很随机,没有跟列表一样,每添加一个,必定排到最后。但是你在添加的时候,可能表现出来有序的,但是其实是无序的!而OrderedDict必定是有序的添加的!
  • 但是这个情况在python3.6版本以后就改善了,现在字典添加的顺序就是展示的顺序,而我们的版本也是高于3.6,所以用这个方法已经验证不出来了,所以我用了另外一种方法验证是否有序。看例子
(36)python少儿编程之字典dict(三)
  • 如图,无论顺序怎么改变,其实集合都是相同的!而OrderedDict就不一样了!
(36)python少儿编程之字典dict(三)
  • 两个一模一样的KV对,按照不同顺序放入的时候,显示结果是不一样了!