python认识collections模块

collections模块提供高性能的容器数据类型,包括defaultdict、OrderedDict、namedtuple和deque等。defaultdict在字典中默认添加键值对,LeetCode问题49可用于加深理解。OrderedDict保持插入顺序,namedtuple为带命名字段的元组。deque是双向列表,常用于队列操作,如queue.Queue、collections.deque和multiprocessing.Manager().Queue(),并提供了多种方法进行操作。Counter是计数器,用于统计元素出现次数。
摘要由CSDN通过智能技术生成

collections是Python内建的集合模块
High-performance container datatypes

This module implements specialized container datatypes providing alternatives to Python’s general purpose built-in containers,dict,list,set,and tuple.
官方文档传送门


替代类型解释

1,defaultdict

意义:
 1,通常通过Key访问字典,Key不存在,会引发‘KeyError’异常
 2,为了不发生异常,在没有Key的情况下,默认增加一个对应Key-Value

>>> dict={
   'a':1}
>>> dict['b']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'b'
>>> dict.update(b=2)
>>> dict['b']
2
>>> 

下面的例子由defaultdict构造,value=int,不会返回错误,默认构造一个Key=Value

>>> ddict=collections.defaultdict(int)
>>> ddict['a']
0

Leetcode.49

为了加深理解,我们来看这道题

给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。

示例:

输入: ["eat", "tea", "tan", "ate", "nat", "bat"],
输出:
[
  ["ate","eat","tea"],
  ["nat","tan"],
  ["bat"]
]

说明:

    所有输入均为小写字母。
    不考虑答案输出的顺序。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/group-anagrams
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解:

def groupAnagrams(self, strs):
        #指定字典的值为列表
        ans =defaultdict(list)
        for str in strs:
            #字典的值不能位列表,sorted(str)之后为列表,改为元祖即可
            ans[tuple(sorted(str))].append(str)

        return  ans.values()

2,OrderedDict

记录插入顺序的字典

3,namedtuple

命名元祖
Factory Function for Tuples with Named Fields

传送门

    from collections import namedtuple
     
    # 定义一个namedtuple类型User,并包含name,sex和age属性。
    User = namedtuple('User', ['name', 'sex'
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值