Python:orator/backpack内置数据操作类Collection

简介: Python:orator/backpack内置数据操作类Collection

文档

https://orator-orm.com/docs/0.9/collections.html


支持36个函数

all avg chunk collapse contains count diff each every 
filter first flatten forget for_page get implode is_empty 
last map merge pluck pop prepend pull push put reduce
reject reverse serialize shift sort sum take to_json 
transform unique where zip

安装

pip install backpack

导入模块

# 如果安装了 orator可以使用
from orator import Collection
# 或者
from backpack import Collection
# 测试使用的data数据
data = [
    {'name': 'Tom', 'age': 23},
    {'name': 'Jack', 'age': 25}
]

1、简单的CURD

# 所有数据
print(Collection([1, 2, 3]).all())
[1, 2, 3]
# 取第一个值
print(Collection([1, 2, 3]).first())
1
# 带条件取值
print(Collection([1, 2, 3]).first(lambda item: item > 1))
2
# 取最后一个值
print(Collection([1, 2, 3]).last())
3
# 分页取值
print(Collection([1, 2, 3, 4, 5, 6, 7, 8, 9]).for_page(2, 3).all())
[4, 5, 6]
# 间隔取数
print(Collection([1, 2, 3]).every(2).all())
[1, 3]
# 前往后取值
print(Collection([2, 1, 3]).take(2).all())
[2, 1]
# 后往前取值
print(Collection([2, 1, 3]).take(-1).all())
[3]
# 切片取值
print(Collection([1, 2, 3, 4, 5, 6])[1:4:2].all())
# [2, 4]
# 获取值
print(Collection([1, 2, 3]).get(4, 'default'))
# default
# 根据键设置值
print(Collection([1, 2, 3]).put(0, 5).all())
[5, 2, 3]
c = Collection([1, 2, 3])
c[0] = 5
print(c.all())
[5, 2, 3]
# 移除数据,不返回值
print(Collection([1, 2, 3]).forget(1).all())
[1, 3]
# 返回移除
print(Collection([1, 2, 3]).pull(0))
1
# 前部插入
print(Collection([1, 2, 3]).prepend(0).all())
[0, 1, 2, 3]
# 弹出第一个值
print(Collection([1, 2, 3]).shift())
1
# 尾部插入
print(Collection([1, 2, 3]).push(4).all())
[1, 2, 3, 4]
print(Collection([1, 2, 3]).append(4).all())
[1, 2, 3, 4]
# 弹出
print(Collection([1, 2, 3]).pop(1))
# 条件取值
print(Collection(data).where('age', 23).all())
[{'name': 'Tom', 'age': 23}]
2、判断操作
```python
# 空值测试
print(Collection([]).is_empty())
True
# 包含
print(Collection([1, 2, 3]).contains(1))
# True
print(1 in Collection([1, 2, 3]))
# True
print(Collection([1, 2, 3]).contains(lambda item: item > 1))
# True
print(Collection(data).contains('name', 'Simon'))
# False

3、数据变换

# 反转
print(Collection([1, 2, 3]).reverse().all())
[3, 2, 1]
# 排序
print(Collection([2, 1, 3]).sort().all())
[1, 2, 3]
# 取唯一值
print(Collection([2, 1, 3, 3]).unique().all())
[2, 1, 3]
# 变换数据,修改自身
print(Collection([2, 1, 3]).transform(lambda item: item * 2).all())
[4, 2, 6]
# 仅迭代,不修改原对象
print(Collection([1, 2, 3]).each(lambda x: x + 1).all())
[1, 2, 3]
# 过滤
print(Collection([1, 2, 3]).filter(lambda item: item > 2).all())
[3]
# 映射
print(Collection([1, 2, 3]).map(lambda x: x + 1).all())
[2, 3, 4]
# 移除满足条件的值
print(Collection([1, 2, 3, 4]).reject(lambda item: item > 3).all())
[1, 2, 3]
# 拆分
print(Collection([1, 2, 3]).chunk(size=2).serialize())
[[1, 2], [3]]
# 塌陷
print(Collection([[1, 2], [3, 4]]).collapse().all())
[1, 2, 3, 4]
# 压平数据,保留值
print(Collection([1, 2, [3, 4, 5, {'foo': 'bar'}]]).flatten().all())
[1, 2, 3, 4, 5, 'bar']
# 取字典值
print(Collection(data).pluck('name').all())
['Tom', 'Jack']
print(Collection(data).pluck('name', 'age'))
{23: 'Tom', 25: 'Jack'}

4、两个集合操作

# 差异比较
print(Collection([1, 2, 3]).diff([2, 3, 4]).all())
[1]
# 合并
print(Collection([1, 2, 3]).merge([1, 2, 3]).all())
[1, 2, 3, 1, 2, 3]
# 合并序列
print(Collection([1, 2, 3]).zip([4, 5, 6]).all())
[(1, 4), (2, 5), (3, 6)]

5、计算操作

# 计数
print(Collection([1, 2, 3]).count())
3
# 计数
print(len(Collection([1, 2, 3])))
3
# 平均数
print(Collection([1, 2, 3]).avg())
2.0
print(Collection(data).avg('age'))
24.0
# 求和
print(Collection([2, 1, 3]).sum())
6
print(Collection(data).sum('age'))
48
# 累积计算
print(Collection([1, 2, 3]).reduce(lambda result, item: result + item, 0))
6

6、序列化

# 取值拼接
print(Collection(data).implode('name', ', '))
# Tom, Jack
print(Collection(['foo', 'bar', 'baz']).implode('-'))
# foo-bar-baz
# 转字符串
print(Collection(data).serialize())
[{'name': 'Tom', 'age': 23}, {'name': 'Jack', 'age': 25}]
# 转json
print(Collection(data).to_json())
[{"name": "Tom", "age": 23}, {"name": "Jack", "age": 25}]


相关文章
|
存储 Python
Python内置数据类型
Python内置数据类型
345 0
|
3月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
318 102
|
3月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
345 104
|
3月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
274 103
|
3月前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
206 82
|
2月前
|
Python
Python编程:运算符详解
本文全面详解Python各类运算符,涵盖算术、比较、逻辑、赋值、位、身份、成员运算符及优先级规则,结合实例代码与运行结果,助你深入掌握Python运算符的使用方法与应用场景。
211 3
|
2月前
|
数据处理 Python
Python编程:类型转换与输入输出
本教程介绍Python中输入输出与类型转换的基础知识,涵盖input()和print()的使用,int()、float()等类型转换方法,并通过综合示例演示数据处理、错误处理及格式化输出,助你掌握核心编程技能。
479 3
|
2月前
|
并行计算 安全 计算机视觉
Python多进程编程:用multiprocessing突破GIL限制
Python中GIL限制多线程性能,尤其在CPU密集型任务中。`multiprocessing`模块通过创建独立进程,绕过GIL,实现真正的并行计算。它支持进程池、队列、管道、共享内存和同步机制,适用于科学计算、图像处理等场景。相比多线程,多进程更适合利用多核优势,虽有较高内存开销,但能显著提升性能。合理使用进程池与通信机制,可最大化效率。
295 3
|
2月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
304 0

推荐镜像

更多