python 字典 defaultdict

统计strings 中某个单词出现的次数


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 = ()
counts = {}
for kw in strings:
	counts.setdefault(kw,0)
	counts[kw] += 1

最后用 defaultdict 来实现

from collections import defaultdict
defaultdict类除了接受类型名称作为初始化函数的参数之外,还可以使用任何不带参数的可调用函数,到时该函数的返回结果作为默认值,这样使得默认值的取值更加灵活
def zero():
	return 0
counts = defaultdict(lambda:0)
counts = defaultdict(int)
for s in strings:
counts[s] += 1

```python
def log_missing():
    print('Key added')
    return 0
current = {'green': 12, 'blue': 3}
increments = [
('red', 5),
('blue', 17),
('orange', 9),
] 
result = defaultdict(log_missing, current)
print('Before:', dict(result))
for key, amount in increments:
    result[key] += amount
print('After: ', dict(result))
class CountMissing(object):
	def __init__(self):
		self.added = 0
	def missing(self):
		self.added += 1
		return 0
counter = CountMissing()
result = defaultdict(counter.missing, current) # Method ref
for key, amount in increments:
	result[key] += amount
assert counter.added == 2
class bCountMissing(object):
	def __init__(self):
		self.added = 0
	def __call__(self):
		self.added += 1
		return 0
counter = bCountMissing()
assert callable(counter)
result = defaultdict(counter, current) # Method ref
for key, amount in increments:
	result[key] += amount
assert counter.added == 2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值