使用类型来初始化字典

使用类型来初始化字典

可以按照所需类型来初始化字典

>>> from collections import defaultdict
>>> dd = defaultdict(list)
>>> dd
defaultdict(<type 'list'>, {})
>>> dd = defaultdict(list)
>>> dd = defaultdict(list)
>>> dd[1]
[]
>>> dd[2]
[]
>>> dd['a']
[]
>>> dd1 = defaultdict(str)
>>> dd1[1]
''
>>> dd1[2]
''
>>> dd2 = defaultdict(int)
>>> dd2[1]
0
>>> dd2[2]
0
>>> dd3 = defaultdict(tuple)
>>> dd3[1]
()
>>> dd3[2]
()

设置还可以把所需的类型设置成另外一个defaultdict,类似套娃

dct = collections.defaultdict(collections.defaultdict)
#defaultdict(<type 'collections.defaultdict'>,{})
>>> dct = defaultdict(defaultdict)
>>> dct
defaultdict(<class 'collections.defaultdict'>, {})
>>> dct['project']
defaultdict(None, {})

其他用处

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

可以等效为:

counts = defaultsdict(int)
for kw in strings:
    counts[kw] += 1

难道使用int类型的时候,只能初始化为0吗 ? 不是的,这个特殊字典使用的类型只要是可调用的类型就行,那么我们可以定制一个函数来实现一些特殊的初始化值实际上。比如:

def ones():
    return 1
dd = defautdict(ones)
dd[5]
>>1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值