Python 中Collections 库的使用

Collections 是Python的数据容器类。官方文档(collections --- 容器数据类型 — Python 3.12.5 文档)说 -- “这个模块实现了一些专门化的容器提供了对 Python 的通用内建容器 dictlistset 和 tuple 的补充。

其中 Counter, defaultdict, ChainMap 等应用广泛。

namedtuple()

一个工厂函数,用来创建元组的子类,子类的字段是有名称的。

deque

类似列表的容器,但 append 和 pop 在其两端的速度都很快。

ChainMap

类似字典的类,用于创建包含多个映射的单个视图。

Counter

用于计数 hashable 对象的字典子类

OrderedDict

字典的子类,能记住条目被添加进去的顺序。

defaultdict

字典的子类,通过调用用户指定的工厂函数,为键提供默认值。

UserDict

封装了字典对象,简化了字典子类化

UserList

封装了列表对象,简化了列表子类化

UserString

封装了字符串对象,简化了字符串子类化

知乎中有篇文章,讲得比较深入

https://zhuanlan.zhihu.com/p/343747724

下面举几个例子,说明应用:

1. defaultdict
from collections import *

class Solution(object):
    #将一个句子中的单词提取并按单词长度排序
    def words_count(self, sentence: str):
        tmp = defaultdict(list)
        print(f"ori tmp -- {tmp}")
        for i in sentence.lower().replace(".", "").split():
            tmp[len(i)].append(i)
        print(f"after defaultdict handing -- {tmp}")
        result = []
        print(tmp.keys())
        len_list = sorted(tmp.keys())
        print(len_list)
        #使用extend()
        # for i in len_list:
        #     result.extend(tmp[i])
        # 或者使用 list.append()
        for i in len_list:
            for j in range(len(tmp[i])):
                result.append(tmp[i][j])
        return result

if __name__ == "__main__":
    sentence = "A yellow fox runs to the mountain."
    s = Solution()
    print(s.words_count(sentence))
2. Chainmap
baseline = {'music': 'bach', 'art': 'rembrandt'}
>>> adjustments = {'art': 'van gogh', 'opera': 'carmen'}
>>> list(ChainMap(adjustments, baseline))
['music', 'art', 'opera']
3. Counter

统计各单词次数是一绝。Counter 的使用异常灵活。遇到相关场景先看下  官方文档(collections --- 容器数据类型 — Python 3.12.5 文档), 了解一下它的能力。

# Tally occurrences of words in a list
>>> cnt = Counter()
>>> for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']:
...     cnt[word] += 1
...
>>> cnt
Counter({'blue': 3, 'red': 2, 'green': 1})

>>> # Find the ten most common words in Hamlet
>>> import re
>>> words = re.findall(r'\w+', open('hamlet.txt').read().lower())
>>> Counter(words).most_common(10)
[('the', 1143), ('and', 966), ('to', 762), ('of', 669), ('i', 631),
 ('you', 554),  ('a', 546), ('my', 514), ('hamlet', 471), ('in', 451)]
### 回答1: 在Pythoncollections是一个内置的标准,不需要下载。它包含了一些有用的数据结构,如字典、列表、集合等,以及一些特殊的容器类型,如Counter、deque、namedtuple等。要使用collections,只需要在代码导入即可。例如: ```python import collections # 使用Counter计算列表元素出现的次数 my_list = ['apple', 'banana', 'apple', 'orange', 'banana', 'banana'] counter = collections.Counter(my_list) print(counter) # 输出:Counter({'banana': 3, 'apple': 2, 'orange': 1}) ``` ### 回答2: collectionsPython的标准之一,提供了一些容器类型,尤其在数据科学和机器学习任务,这些容器类型常被使用。我们可以通过pip来下载collections。 首先,确认你的电脑已经安装了Python和pip。如果没有,可以在Python官网下载Python:https://www.python.org/。一般而言,Python3自带了pip,因此无需再额外下载。 打开命令行或终端(windows操作系统下按下Win+R,输入cmd,点击确定;MacOS操作系统下可以直接在spotlight输入terminal打开),输入以下命令,并按回车键: pip install collections 如果你碰巧安装了Anaconda,则无需使用pip安装collections。因为Anaconda已经在安装时自带了collections。你可以直接在Anaconda Prompt或者Jupyter Notebook使用collections。 下载完成后,你就可以在你的Python脚本或者交互式解释器使用collections提供的各种容器类型了。比如可以使用defaultdict创建一个默认值为0的字典,或使用Counter计算一个列表元素出现的次数。 当你不再需要使用collections时,可以使用以下命令将其卸载: pip uninstall collections 注意:collectionsPython的标准之一,因此其不需要额外的安装,只需要将其引入到你的Python脚本即可。如果你使用的是Python的较老版本,collections可能无法从pip下载,需要升级到新版本的Python。 ### 回答3: Python collections 模块是一个用于操作集合数据类型的内置。这个模块包括了许多集合数据类型,比如列表、字典、元组等等。它为开发人员提供了各种操作这些数据类型的实用函数。 collections 模块是 Python 标准的一部分,所以你不需要进行任何安装就可以使用它。你只需要在你的代码导入这个即可使用它提供的函数。 要导入 collections 模块,你只需要使用以下代码: ```python import collections ``` 在导入 collections 模块之后,就可以使用的许多数据类型和函数了。以下是一些 collections 模块常用的函数和数据类型: 1. Counter 类型 Counter 类型用于计数某个元素在集合出现的次数。你可以用以下代码创建一个 Counter: ```python from collections import Counter my_list = [1, 2, 3, 4, 2, 2, 3, 1, 4, 4, 5, 1, 2] my_counter = Counter(my_list) print(my_counter) ``` 运行这段代码会输出以下结果: ```python Counter({2: 4, 1: 3, 4: 3, 3: 2, 5: 1}) ``` 这意味着数字 2 在 my_list 出现了 4 次,数字 1 在 my_list 出现了 3 次,以此类推。 2. defaultdict 类型 defaultdict 类型是一个字典类型,它可以自动为字典的新键值分配一个默认值。默认值的类型由 defaultdict 的参数指定。以下是一个 defaultdict 的示例代码: ```python from collections import defaultdict my_dict = defaultdict(int) my_dict['a'] = 1 my_dict['b'] = 2 print(my_dict['c']) ``` 输出: ```python 0 ``` 这是因为在字典 my_dict 没有键 'c',所以根据定义的默认值,它的值为 0。 除了上述两个数据类型和函数,collections 模块还有很多其他有用的数据类型和函数,如 namedtuple、deque、OrderedDict 等。这些函数和数据类型大大简化了 Python 编程的许多常见操作,提高了开发人员的工作效率和编程体验。 总之,通过使用 collections 模块提供的函数和数据类型,开发人员可以更快速、更方便地开发出高效的 Python 程序,使得日常编程工作变得更加简便易行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值