python之collections模块

collections是Python内置的集合模块,提供许多集合类,完成基本的集合操作;

1.namedtuple

作用:named:命名的,tuple:Python基本数据结构,元组,是不可变集合;

即创建一个自定义的tuple对象,并规定其个数;可以用属性完成属性引用(等价于面向对象中对象的属性)

# 1.namedtuple
point = collections.namedtuple('Point',['x','y'])  # 定义一个二维的坐标
p = point(11,22)  # 类似于构造方法赋值
print(p.x+p.y)  # 33
Cicle = collections.namedtuple('Circle',['x','y','z'])  # 定义一个三维坐标
Cicle.x = 1
Cicle.y = 2
Cicle.z = 3
print(Cicle.x+Cicle.y+Cicle.z)  # 6

2.deque:

python中的list插入和删除数据比较慢,为高效的实现插入和删除,构造双向列表,适用于队列和栈(即此时二者都是双向的,都可以在头尾进行插入和删除)

queue = collections.deque()
queue.append('123')  # deque(['123']),123的位置相当于头(如果是栈的话就是栈顶)
queue.appendleft('456')  # deque(['456', '123']),等价于从尾插入数据
queue.appendleft('789')  # deque(['789', '456', '123'])

queue.pop()  # deque(['789', '456']),从头删除数据
queue.popleft()  # deque(['456'])
print(queue)

3.defaultdict

在使用dict结构时,当key不存在时,会显示异常;而defaultdict结构中设置默认值,如果不存在,返回默认值;

# 3.defaultdict
dict = {"a" : 65, "b" : 66}
print('a对应的值:{}'.format(dict['a']))
print('c对应的值:{}'.format(dict['c']))

dict1 = collections.defaultdict(lambda:0)  # 声明一个值为0的字典
dict1['a'] = 65  # 覆盖一个位置,存储为'a'
print('a对应的值:{}'.format(dict1['a']))  # a对应的值:65
print('c对应的值:{}'.format(dict1['c']))  # c对应的值:0

结果分别为:

4.OrderedDict

使用dict时,key是无序的,orderedDict提供排序的dict(可以自定义排序的规则函数);

dict = collections.OrderedDict()
dict = {'a':2,'b':4,'c':3}
dict = collections.OrderedDict(sorted(dict.items(),key=lambda x:x[1],reverse=True)) # 根据字典中的值倒序排列
for k,v in dict.items():
    print(k,v)
'''
b 4
c 3
a 2
'''

5.Counter

统计字符出现的次数

# 5.Counter
word_list = ['programming','program','english','program']
count = collections.Counter(word_list) # 统计每个单词出现的次数
print(count)
count1 = collections.Counter()
word = 'programming'
for i in word:
    count1[i] = count1[i]+1
print(count1)

'''
Counter({'program': 2, 'programming': 1, 'english': 1})
Counter({'r': 2, 'g': 2, 'm': 2, 'p': 1, 'o': 1, 'a': 1, 'i': 1, 'n': 1})
'''

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值