## redis05集合 转

AllenOR灵感

- 集合类型 列表类型

### 有序集合

``````import redis
from _functools import partial

# 连接redis
r = redis.StrictRedis('192.168.1.124', decode_responses=True)

# 清空所有键
for number, key in enumerate(r.keys()):
r.delete(key)

# 准备数据
Tom=89, Peter=67, David=100,
Jerry=56, Wendy=92, Yvonne=67,
Anna=32, Eric=47, Jack=77,

``````# 打印所有数据
print(r.zrange('scoreboard', 0, -1, withscores=True))
# 显示结果
[('Anna', 32.0), ('Eric', 47.0), ('William', 49.0), ('Jerry', 56.0), ('Peter', 67.0), ('Yvonne', 67.0), ('Jack', 77.0), ('Adam', 80.0), ('Tom', 89.0), ('Wendy', 92.0), ('Michael', 97.0), ('David', 100.0)]``````

``````# 查看数据
print(r.zrangebyscore('scoreboard', 50, 90, withscores=True))

# 显示结果
[('Jerry', 56.0), ('Peter', 67.0), ('Yvonne', 67.0), ('Jack', 77.0), ('Adam', 80.0), ('Tom', 89.0)]``````

``````# 筛选分数大于60分的人
print(r.zrangebyscore('scoreboard', 60, '+inf', withscores=True))
# 显示结果
[('Peter', 67.0), ('Yvonne', 67.0), ('Jack', 77.0), ('Adam', 80.0), ('Tom', 89.0), ('Wendy', 92.0), ('Michael', 97.0), ('David', 100.0)]

# 筛选分数大于60分且分数最低的三个人
print(r.zrangebyscore('scoreboard', 60, '+inf', start=0, num=3, withscores=True))
# 显示结果
[('Peter', 67.0), ('Yvonne', 67.0), ('Jack', 77.0)]

# 筛选分数大于60分且分数最高的三个人
print(r.zrevrangebyscore('scoreboard', '+inf', 60, start=0, num=3, withscores=True))
# 显示结果
[('David', 100.0), ('Michael', 97.0), ('Wendy', 92.0)]``````

``````# 打印所有数据
print(r.zrange('scoreboard', 0, -1, withscores=True))
# 查看结果
[('Anna', 32.0), ('Eric', 47.0), ('William', 49.0), ('Jerry', 56.0), ('Peter', 67.0), ('Yvonne', 67.0), ('Jack', 77.0), ('Adam', 80.0), ('Tom', 89.0), ('Wendy', 92.0), ('Michael', 97.0), ('David', 100.0)]

# 打印Tom元素的排名，它会根据当前元素的分数进行排列并计算出Tom的排名。
print(r.zrank('scoreboard', 'Tom'))
# 查看结果
8``````

``````# 准备第二组数据, 其中Jack在两组数据中都是存在的.
Daniel=10, Alex=20, Jack=6)

# 提取交集，zinterstore默认会将两组数据中相同的名字的分数进行相加.
# 有序集合在这里会将提取出来的结果存放到一个独立的键值对象中(在这里是scoreboard_result).
r.zinterstore('scoreboard_result', keys=('scoreboard', 'scoreboard_2'))

# 打印结果
print(r.zrange('scoreboard_result', 0, -1, withscores=True))

# 显示结果
[('Jack', 83.0)]

# zinterstore的可选参数：aggregate
# 它有三个固定参数：sum, max, min
# sum是默认参数，表示相同名字的分数相加
# max表示相同名字的分数取最大的那个
# min表示相同名字的分数取最小的那个
r.zinterstore('scoreboard_result', keys=('scoreboard', 'scoreboard_2'), aggregate='min')
print(r.zrange('scoreboard_result', 0, -1, withscores=True))
# 显示结果
[('Jack', 6.0)]

r.zinterstore('scoreboard_result', keys=('scoreboard', 'scoreboard_2'), aggregate='max')
print(r.zrange('scoreboard_result', 0, -1, withscores=True))
# 显示结果
[('Jack', 77.0)]``````

``````# 准备第二组数据, 其中Jack在两组数据中都是存在的.
Daniel=10, Alex=20, Jack=6)

# 去重合并，分数相加(默认情况下aggregate等于sum)
r.zunionstore('scoreboard_result', keys=('scoreboard', 'scoreboard_2'))
print(r.zrange('scoreboard_result', 0, -1, withscores=True))
# 显示结果
[('Daniel', 10.0), ('Alex', 20.0), ('Anna', 32.0), ('Eric', 47.0), ('William', 49.0), ('Jerry', 56.0), ('Peter', 67.0), ('Yvonne', 67.0), ('Adam', 80.0), ('Jack', 83.0), ('Tom', 89.0), ('Wendy', 92.0), ('Michael', 97.0), ('David', 100.0)]``````

##### Sets / 集合类型命令(14)
- - - - -
SINTERSTORE SISMEMBER SMEMBERS SMOVE SPOP
SRANDMEMBER SREMSSCAN SUNION SUNIONSTORE

##### Sorted Sets / 有序集合类型命令(21)
- - - -
ZINTERSTORE ZLEXCOUNT ZRANGE ZRANGEBYLEX
ZRANGEBYSCORE ZRANK ZREM ZREMRANGEBYLEX
ZREMRANGEBYRANK ZREMRANGEBYSCORE ZSCAN ZREVRANGEBYLEX
ZREVRANGE ZREVRANGEBYSCORE ZSCORE ZREVRANK
ZUNIONSTORE

### AllenOR灵感

Python入门笔记(11):集合 -----集合

Airship
2016/04/22
22
0
Python数据结构之集合概览

Python数据结构之集合概览 集合（collection），正如其名称所示，是可以作为概念性的单位来处理的一组零个或多个项。几乎软件的每一个重要部分都涉及集合的使用。尽管我们在计算机科学中所学...

2017/12/25
0
0

选自DataCamp 　　作者：Michael Galarnyk 　　机器之心编译 　　参与：Geek Ai、思源 　　 　　一般我们熟悉 Python 中列表、元组及字典等数据结构，但集合可能用得稍微少一点。但集合独...

2018/06/24
0
0
OC中的NSSet（集合）

NSSet（集合） 集合：集合（NSSet）和数组（NSArray）有相似之处，都是存储不同的对象的地址；不过NSArray是有序的集合，NSSet是无序的集合。 集合是一种哈希表，运用散列算法，查找集合中的...

Dumplings
2016/04/01
24
0

Problem 你想要把两个集合合并为一个集合，要么包含两集合所有的元素，要么包含两个集合的相同元素，要么包含两个集合的不同元素。 Solution 对于这个问题有很多解决方案，用哪种取决于你的需...

2016/04/18
538
0

go4it
17分钟前
0
0
mysqldump应用

24分钟前
0
0
shell脚本与Python的交互

1、Python针对shell获取传入，输出参数 传入:"\$num" 例如: \$0表示文件名，\$1表示shell获取的第一个参数 输出:通过打印shell结果的方式，输出参数给Python。 例如: echo "{\$iplist}"，Python调...

27分钟前
0
0
Euler 今日问世！国内首个工业级的图深度学习开源框架，阿里妈妈造

34分钟前
0
0
TiDB 3.0 Beta Release Notes

2019 年 1 月 19 日，TiDB 发布 3.0 Beta 版，对应 master branch 的 TiDB-Ansible。相比 2.1 版本，该版本对系统稳定性、优化器、统计信息以及执行引擎做了很多改进。 TiDB 新特性 支持 Vi...

TiDB

6
0