Python中defaultdict()的使用

基本定义

(1)类似于C++的STL中的map,可以自定义字典的value类型,比如 dict = defaultdict(list),dict = defaultdict(int)

List类型

(1)自定义字典的value为列表(list),当访问一个key不存在时,将会为这个key自动创建一个新的list,大小为空

(2)当访问一个存在的key时,将会返回那个已经存在的list,此时可以进行append()等操作

from collections import defaultdict

s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]

d = defaultdict(list) # 新建一个以list为默认value的字典

for k, v in s: # 保存每个水果中的数字
    d[k].append(v)

sorted(d.items()) # 按照字典的key排序
print(d.items())

# [('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]

Int类型

(1)自定义字典的value为整数(int),当访问一个key不存在时,将会为这个key自动创建一个新的int,值为0

(2)当访问一个存在的key时,将会返回那个已经存在的int,此时可以进行add等操作

s = 'mississippi' # 一个多个重复字符的字符串
d = defaultdict(int) # 新建一个以list为默认value的字典

for k in s: # 保存每个字符出现的个数,注意这里的每个字符初始个数为0
    d[k] += 1

sorted(d.items()) # 按照字典的key排序
print(d.items())

# [('i', 4), ('m', 1), ('p', 2), ('s', 4)]

Set类型

(1)自定义字典的value为集合(set),当访问一个key不存在时,将会为这个key自动创建一个新的set,大小为空

(2)当访问一个存在的key时,将会返回那个已经存在的set,此时可以进行add等操作

# set
s = [('red', 1), ('blue', 2), ('red', 3), ('blue', 4), ('red', 1), ('blue', 4)]

d = defaultdict(set) # 新建一个以set为默认value的字典

for k, v in s: # set中只保存不重复的元素
    d[k].add(v)

sorted(d.items()) # 按照字典的key排序
print(d.items())

# [('blue', {2, 4}), ('red', {1, 3})]

全部示例


# list
from collections import defaultdict

s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]

d = defaultdict(list) # 新建一个以list为默认value的字典

for k, v in s: # 保存每个水果中的数字
    d[k].append(v)

sorted(d.items()) # 按照字典的key排序
print(d.items())

# [('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]

# int
s = 'mississippi' # 一个多个重复字符的字符串
d = defaultdict(int) # 新建一个以list为默认value的字典

for k in s: # 保存每个字符出现的个数,注意这里的每个字符初始个数为0
    d[k] += 1

sorted(d.items()) # 按照字典的key排序
print(d.items())

# [('i', 4), ('m', 1), ('p', 2), ('s', 4)]

# set
s = [('red', 1), ('blue', 2), ('red', 3), ('blue', 4), ('red', 1), ('blue', 4)]

d = defaultdict(set) # 新建一个以set为默认value的字典

for k, v in s: # set中只保存不重复的元素
    d[k].add(v)

sorted(d.items()) # 按照字典的key排序
print(d.items())

# [('blue', {2, 4}), ('red', {1, 3})]

 

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值