首先,看看python里面的基础字典使用,下面代码会出错,因为字典里没有key值"k2"存在。
pythond = {"k1": 123}
print(d["k2"])
python里字典的get()方法获取key的value,如果没有key,返回默认项,默认项可以是任意对象。
但是,get方法不会改变字典本身。
下面的代码演示了这一原则。
pythond = {"k1": 123}
print(d.get('k2', 45))
print(d.get('k2', []))
print(d)
ouput:
45 [] {'k1': 123}
collections.defaultdict 在最初需要设置默认返回的对象,当找不到key时候,自动创建一个键值对到原字典,原字典会改变。
pythonfrom collections import defaultdict
d = defaultdict(int)
d['k1'] = 123
print("普通的", d)
print(d['k2'])
print("查找了一个不存在的key后的d", d)
output
普通的 defaultdict(<class 'int'>, {'k1': 123}) 0 查找了一个不存在的key后的d defaultdict(<class 'int'>, {'k1': 123, 'k2': 0})
做一些数据统计的时候,比如直方图,统计每个类别有多少数量,开始也不知道有多少类别。
下面代码演示了这一场景,统计s字符串中各个字母的数量个数。
pythonfrom collections import defaultdict
s = 'mississippi'
d = defaultdict(int)
for k in s:
d[k] += 1
print(d.items())
output
dict_items([('m', 1), ('i', 4), ('s', 4), ('p', 2)])
本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!