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}]
相关文章
|
4月前
|
数据采集 Web App开发 数据可视化
Python零基础爬取东方财富网股票行情数据指南
东方财富网数据稳定、反爬宽松,适合爬虫入门。本文详解使用Python抓取股票行情数据,涵盖请求发送、HTML解析、动态加载处理、代理IP切换及数据可视化,助你快速掌握金融数据爬取技能。
2649 1
|
4月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
577 0
|
4月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
4月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
5月前
|
存储 监控 API
Python实战:跨平台电商数据聚合系统的技术实现
本文介绍如何通过标准化API调用协议,实现淘宝、京东、拼多多等电商平台的商品数据自动化采集、清洗与存储。内容涵盖技术架构设计、Python代码示例及高阶应用(如价格监控系统),提供可直接落地的技术方案,帮助开发者解决多平台数据同步难题。
|
5月前
|
存储 JSON 算法
Python集合:高效处理无序唯一数据的利器
Python集合是一种高效的数据结构,具备自动去重、快速成员检测和无序性等特点,适用于数据去重、集合运算和性能优化等场景。本文通过实例详解其用法与技巧。
185 0
|
5月前
|
数据采集 关系型数据库 MySQL
python爬取数据存入数据库
Python爬虫结合Scrapy与SQLAlchemy,实现高效数据采集并存入MySQL/PostgreSQL/SQLite。通过ORM映射、连接池优化与批量提交,支持百万级数据高速写入,具备良好的可扩展性与稳定性。
|
5月前
|
JSON API 数据安全/隐私保护
Python采集淘宝评论API接口及JSON数据返回全流程指南
Python采集淘宝评论API接口及JSON数据返回全流程指南
|
5月前
|
数据采集 数据可视化 关系型数据库
基于python大数据的电影数据可视化分析系统
电影分析与可视化平台顺应电影产业数字化趋势,整合大数据处理、人工智能与Web技术,实现电影数据的采集、分析与可视化展示。平台支持票房、评分、观众行为等多维度分析,助力行业洞察与决策,同时提供互动界面,增强观众对电影文化的理解。技术上依托Python、MySQL、Flask、HTML等构建,融合数据采集与AI分析,提升电影行业的数据应用能力。
|
5月前
|
缓存 供应链 芯片
电子元件类商品 item_get - 商品详情接口深度分析及 Python 实现
电子元件商品接口需精准返回型号参数、规格属性、认证及库存等专业数据,支持供应链管理与采购决策。本文详解其接口特性、数据结构与Python实现方案。

推荐镜像

更多