首页 > 编程语言 > 详细

Python中defaultdict方法的使用

时间:2020-08-14 02:02:40      阅读:58      评论:0      收藏:0      [点我收藏+]

Python的字典是否有默认值?

众所周知,在Python中如果访问字典中不存在的键,会引发KeyError异常(JavaScript中如果对象中不存在某个属性,则返回undefined)。但是有时候,字典中的每个键都存在默认值是非常方便的。例如下面的例子:

strings = (puppy, kitten, puppy, puppy, weasel, puppy, kitten, puppy) counts = {} 
for kw in strings: 
    counts[kw] += 1

该例子统计strings中某个单词出现的次数,并在counts字典中作记录。单词每出现一次,在counts相对应的键所存的值数字加1。但是事实上,运行这段代码会抛出KeyError异常,出现的时机是每个单词第一次统计的时候,因为Python的dict中不存在默认值的说法。

为了解决上述问题,我们可以先加个判断语句,若key不存在,则其value值设为1:

strings = (puppy, kitten, puppy, puppy,
           weasel, puppy, kitten, puppy)
counts = {}

for kw in strings:
    if kw not in counts:
        counts[kw] = 1
    else:
        counts[kw] += 1

同样也可以利用setdefault的方法来设置默认值:

strings = (puppy, kitten, puppy, puppy,
           weasel, puppy, kitten, puppy)
counts = {}

for kw in strings:
    counts.setdefault(kw, 0)
    counts[kw] += 1

 

还有一种方法来对字典进行初始化操作——defaultdict

defaultdict类就好像是一个dict,但是它是使用一个类型来初始化的:

>>> from collections import defaultdict
>>> d = defaultdict(list)
>>> d[k1]
[]
>>> d
defaultdict(<class list>, {k1: []})
>>> d[k2]=kobe
>>> d
defaultdict(<class list>, {k1: [], k2: kobe})
>>> d[k3].append(lebron)
>>> d
defaultdict(<class list>, {k1: [], k2: kobe, k3: [lebron]})

 

Python中defaultdict方法的使用

原文:https://www.cnblogs.com/sunny0824/p/13498696.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!