我可以在python中解压从mysql压缩的数据吗?
mysql 5.6
select to_base64(compress("test"));
Run Code Online (Sandbox Code Playgroud)
mysql 的结果
BAAAAHicK0ktLgEABF0BwQ==
Run Code Online (Sandbox Code Playgroud)
python 解压
>>> import zlib
>>> import base64
>>> s = "BAAAAHicK0ktLgEABF0BwQ=="
>>> zlib.decompress(base64.b64decode(s))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
zlib.error: Error -3 while decompressing data: incorrect header check
Run Code Online (Sandbox Code Playgroud)
我检查了zlib 手册,我不知道为什么会出现错误?
解决方案 我从我的朋友那里找到了解决方案。
ss = base64.b64decode(s)
zlib.decompress(ss[4:])
Run Code Online (Sandbox Code Playgroud) 我有一个项目清单
item = [a,a,a,b,b,b,b,c,c,c,c,c,e,e,e,e,e,e]
Run Code Online (Sandbox Code Playgroud)
我想用混合顺序对它进行排序,所以相邻允许最大重复两次,比如
[a,a,b,a,b,b,c,c,b,b,c,e,c,c,e,e,e,e,e]
Run Code Online (Sandbox Code Playgroud)
因为没有更多的项目可以随e改组,所以e将与邻居保持重复.
有没有快速的方法来排序这个?
为了说清楚,给它一个真实的例子,在笔记本电脑类别中,我有来自IBM的100个产品,来自Acer的10个产品,来自Apple的6个产品,我想要将相同的品牌排序为尽可能混合.
例如,我有未分类的列表
[{brand:"ibm", "id":1},{brand:"ibm", "id":2},{brand:"ibm", "id":3},{brand:"ibm", "id":4},{brand:"ibm", "id":5},{brand:"ibm", "id":6},{brand:"acer", "id":7},{brand:"acer", "id":8},{brand:"acer", "id":9},{brand:"acer", "id":10},{brand:"apple", "id":11},{brand:"apple", "id":12}]
Run Code Online (Sandbox Code Playgroud)
目标结果,只要同一个品牌不相邻,就像前10个都来自同一品牌,但可以2-3相同的品牌相邻,
[{brand:"ibm", "id":1},,{brand:"acer", "id":7},{brand:"ibm", "id":2},{brand:"ibm", "id":3},{brand:"acer", "id":8},{brand:"apple", "id":12}{brand:"ibm", "id":4},{brand:"acer", "id":9},{brand:"ibm", "id":5},{brand:"ibm", "id":6},{brand:"acer", "id":10}]
Run Code Online (Sandbox Code Playgroud)
最好不要使用随机数,但是使用确定性排序,因此每次用户仍然看到相同的顺序时,它不是必须的,因为它可以保存到缓存中.
谢谢