collections的常用方法

collections

collections模块是Python内置的一个集合(容器)类库,提供了一些特定的容器类,用于存储和管理数据,比内置的容器类更加强大和灵活。以下是该模块中一些常用的容器类及其示例:
以下是常用的collections模块中的方法:

  1. namedtuple
    定义一个具名元组类。元组是不可变的,但由于具名元组的属性,可以像对象一样引用元素。

示例:

from collections import namedtuple

# 定义一个具名元组类
Person = namedtuple('Person', ['name', 'age', 'gender'])

# 创建一个具名元组对象并访问它的属性
person1 = Person(name='Alice', age=25, gender='Female')
print(person1.name)  # output: Alice
  1. deque
    实现了双端队列,支持从两端添加或删除元素。比列表的效率更高。

示例:

from collections import deque

# 创建一个双端队列
d = deque([1, 2, 3])

# 在左边添加元素
d.appendleft(0)

# 在右边添加元素
d.append(4)

print(d)  # output: deque([0, 1, 2, 3, 4])
  1. Counter
    计数器,用于统计元素出现的次数。

示例:

from collections import Counter

# 创建一个计数器
c = Counter(['apple', 'banana', 'apple', 'orange', 'banana', 'apple'])

# 统计元素出现的次数
print(c)  # output: Counter({'apple': 3, 'banana': 2, 'orange': 1})

# 获取最常见的3个元素及其出现次数
print(c.most_common(3))  # output: [('apple', 3), ('banana', 2), ('orange', 1)]
  1. defaultdict
    字典的子类,当访问一个不存在的键时,返回一个默认值。

示例:

from collections import defaultdict

# 创建一个默认字典,返回值为0
d = defaultdict(int)

# 访问一个不存在的键,返回默认值0
print(d['key'])  # output: 0
  1. OrderedDict
    有序字典,记录元素的添加顺序。

示例:

from collections import OrderedDict

# 创建一个有序字典
d = OrderedDict()

# 添加元素
d['a'] = 1
d['b'] = 2
d['c'] = 3

# 遍历字典,输出顺序为添加顺序
for k, v in d.items():
    print(k, v)

# output:
# a 1
# b 2
# c 3
  1. ChainMap
    将多个字典或映射组合为一个映射。

示例:

from collections import ChainMap

# 创建两个字典
d1 = {'a': 1, 'b': 2}
d2 = {'b': 3, 'c': 4}

# 将两个字典组合为一个映射
chained_dict = ChainMap(d1, d2)

# 访问元素
print(chained_dict['a'])  # output: 1
print(chained_dict['b'])  # output: 2,因为d1中的'b'优先级更高
print(chained_dict['c'])  # output: 4
  1. UserDict
    一个字典的包装类,可以更方便地创建子类。

示例:

from collections import UserDict

# 创建一个字典的包装类
class MyDict(UserDict):
    def square(self):
        for k, v in self.data.items():
            self.data[k] = v ** 2

# 创建一个实例
d = MyDict({'a': 2, 'b': 3, 'c': 4})

# 调用自定义方法
d.square()

# 输出字典
print(d)  # output: {'a': 4, 'b': 9, 'c': 16}
  1. UserList
    一个列表的包装类,可以更方便地创建子类。

示例:

from collections import UserList

# 创建一个列表的包装类
class MyList(UserList):
    def remove_and_square(self, item):
        self.data.remove(item)
        self.data = [x ** 2 for x in self.data]

# 创建一个实例
l = MyList([2, 3, 4, 5])

# 调用自定义方法
l.remove_and_square(4)

# 输出列表
print(l)  # output: [4, 9, 25]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

trust Tomorrow

感谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值