python的defaultdict用法

在学习python数据分析的时候,碰到defaultdict的使用,下面说明一下:

先看例子:如果我要将一个包含单词的列表按照单词的首字母分类,并组成一个字典。

words = ['apple', 'pear', 'peach', 'banana', 'plum']
by_letter = {}
for word in words:
    letter = word[0]
    if letter not in by_letter:
        by_letter[letter] = [word]
    else:
        by_letter[letter].append(word)

输出:

另一种方法是使用dict的内置方法:setdefault(key,默认值)。该方法是尝试设置key值,如果key存在,则返回key对应的值,如果key不存在,则添加该key,并将默认值作为它的值。

words = ['apple', 'pear', 'peach', 'banana', 'plum']
by_letter = {}
for word in words:
    letter = word[0]
    by_letter.setdefault(letter, []).append(word)

输出结果同上。

最后一种方法是使用defaultdict,它接受一个工厂方法来构造:

d = defaultdict(factory_function)

这里的factory_function可以是list,set,str等其他,当字典中的key不存在时,返回的是factory_function的默认值,比如list返回[],str返回空字符串'',int返回0。

下面使用defaultdict实现上述的要求:

from collections import defaultdict
words = ['apple', 'pear', 'peach', 'banana', 'plum']
by_letter = defaultdict(list)#使用list方法作为工厂方法,key不存在返回[]
for word in words:
    by_letter[word[0]].append(word)

输出同上。但是for循环中一行代码就实现了功能,很简洁。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值