python--关于defaultdict()函数

最初使用字典的时候,只是简单实用dict(),但是如果键不存在,就会报错显示keyerror,此时可以考虑使用defaultdict()函数。

如何使用KeyError

from collections import defaultdict
a=defaultdict(int)
#或者是
import collections
a=collections.defaultdict(int)

defaultdict()和dict()两者的比较

from collections import defaultdict
a=dict()
b=defaultdict(int)
执行:
print(b["a"])
>>>0如果把上面b的定义更改一下
b=defaultdict(list)
执行:
print(b["a"])
>>>[]
执行:
print(a["a"])
>>>KeyError,"a"

defaultdict()在dict()的基础上添加了一个missing(key)的方法,在调用一个不存在的key的时候,defaultdict函数会调用“missing”,返回一个int,set,list,dict对应的默认数值,不会出现keyerror的情况。

举例子

s = 'mississippi'
d = defaultdict(int)
for k in s:
  d[k] += 1
print(d)

输出:
defaultdict(<class 'int'>, {'m': 1, 'i': 4, 's': 4, 'p': 2})

另一个例子:

s = [('red', 1), ('blue', 2), ('red', 3), ('blue', 4), ('red', 1), ('blue', 4)]
#像这种形式的只能是元组形成的列表,如果是dict()字典,是不能存在相同的键
d = defaultdict(set)
for k, v in s:
  d[k].add(v)

print(d)

输出:
defaultdict(<class 'set'>, {'red': {1, 3}, 'blue': {2, 4}})

关于例子进行的思考,巩固之前知识点

s = {'red': 1, 'blue': 2, 'red': 3, 'blue': 4, 'red': 1, 'blue': 4}
d = defaultdict(set)
c=s.items()
print(c)
print(type(c))
for k, v in s.items():
    d[k].add(v)
print(d)
输出:
dict_items([('red', 1), ('blue', 4)])
<class 'dict_items'>
defaultdict(<class 'set'>, {'red': {1}, 'blue': {4}})

again:

a={"cheng":"haha","cheng":"lala"}
print(a.items())
输出:
dict_items([('cheng', 'lala')])

参考内容:python中defaultdict的用法详解

猜你喜欢

转载自blog.csdn.net/the_little_fairy___/article/details/80551538