collections工具库中的一些容器

1.defaultdict

#defaultdict解决使用dict最常见的问题,就是key为空的情况
#方法1:在每次get之前写一个if判断
if key in dict:
    return dict[key]
else:
    return None

data = [(1, 3), (2, 1), (1, 4), (2, 5), (3, 7)]
d = {}
for k, v in data:
    if k in d:
        d[k].append(v)
    else:
        d[k] = [v]
d

#方法2:用defaultdict
from collections import defaultdict
data = [(1, 3), (2, 1), (1, 4), (2, 5), (3, 7)]
d = defaultdict(list)
for k,v in data:
    d[k].append(v)
d    

2.Counter

#counter
words = ['apple', 'apple', 'pear', 'watermelon', 'pear', 'peach']
from collections import Counter
counter = Counter(words)
print(counter)

#要筛选topK
counter.most_common(2)

3.deque

#queue是队列,deque是双端队列
#deque常用api有append,pop,appendleft,popleft
from collections import deque
dque = deque(maxlen=10)
# 假设我们想要从文件当中获取最后10条数据
for i in f.read():
    dque.append(i)

4.namedtuple

#namedtuple
from collections import namedtuple
#这是个类
Student = namedtuple('Student',['name','score','age'])
#这是个实例
student = Student(name='xiaoming',score=99,age=20)
print(student.name)

#通过传入defaults参数来定义缺失值
#在Python的规范当中,必选参数一定在可选参数前面。所以nuamdtuple会自动右对齐
Student = namedtuple('Student', ['name', 'score', 'age'], defaults=(0, 0))

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 的 `collections` 库是一个很有用的工具,它提供了一些常用的容器类型,这些容器类型是 Python 内置数据类型的扩展,可以方便地处理各种数据,并提高了代码的可读性和效率。 下面我们来介绍一下 `collections` 库中几个常用的容器类型: 1. `namedtuple` `namedtuple` 可以看作是一个带有命名字段的元组,它的每个字段都有一个名称,可以通过名称来访问。使用 `namedtuple` 可以避免因为下标错误引起的错误,提高代码可读性。 ```python from collections import namedtuple # 定义一个 Point 类型 Point = namedtuple('Point', ['x', 'y']) # 创建一个 Point 对象 p = Point(1, 2) # 访问 Point 对象的字段 print(p.x, p.y) # 输出:1 2 ``` 2. `Counter` `Counter` 是一个计数器,它可以统计每个元素出现的次数,并以字典的形式返回。 ```python from collections import Counter # 统计一个字符串中每个字符出现的次数 s = "hello, world!" counter = Counter(s) print(counter) # 输出:Counter({'l': 3, 'o': 2, 'e': 1, 'h': 1, ',': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1, '!': 1}) ``` 3. `deque` `deque` 是一个双端队列,可以在两端进行插入和删除操作,比列表在左端插入和删除的效率更高。 ```python from collections import deque # 创建一个 deque 对象 d = deque([1, 2, 3]) # 在左端插入一个元素 d.appendleft(0) # 在右端插入一个元素 d.append(4) # 删除左端的元素 d.popleft() # 删除右端的元素 d.pop() print(d) # 输出:deque([0, 1, 2, 3]) ``` 除了以上这些常用的容器类型外,`collections` 还提供了其他的容器类型,如 `defaultdict`、`OrderedDict` 等,这些容器类型可以在不同的场景中使用,可以根据实际需求进行选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值