小编use*_*324的帖子

python 2.x zlib.从mysql解压缩数据

我可以在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)

python

5
推荐指数
1
解决办法
1004
查看次数

python排序与相邻差异

我有一个项目清单

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)

最好不要使用随机数,但是使用确定性排序,因此每次用户仍然看到相同的顺序时,它不是必须的,因为它可以保存到缓存中.

谢谢

python sorting

1
推荐指数
1
解决办法
214
查看次数

标签 统计

python ×2

sorting ×1