Python一些好玩的方法


开头唠叨两句

有啥好玩的方法能够告诉我,积累一些小代码断html

  • Author: Leo
  • Wechat: Leo-sunhailin
  • QQ: 379978424
  • E-mail: 379978424@qq.com

如今有12345五个东西,求分红2,3,4,5组的全排列总和,且每组每一个方法不能重复。python

# 320种
for i in range(2, 6):
    for j in itertools.permutations('12345', i):
        print([int(x) for x in j])复制代码

通常网页请求json数据返回的json到了Python中会变为字典形式,可是Python(3.6仍是3.5以前)的字典是无序的,若是业务需求要有序的话,只要作以下修改:mongodb

from collection import OrderedDict

# url是目标地址
result = urllib.request.urlopen(url).read().decode("UTF-8")
# 主要就是object_pairs_hook这块引用OrderedDict.
json_result = json.loads(result, object_pairs_hook=OrderedDict)

# 这样返回的json字典就是有序的复制代码

若是你的MongoDB数据库中存了相似于这样的数据 LUUID("e5e1c8ee-cb58-11e7-a088-f82819e1bcfa"), 实际上就UUID类型的数据,这时候改怎么读取回来以后查询呢?数据库

官方文档: 官方文档json

在讲如何查询以前先说明一下查询回来的结果只有 e5e1c8ee-cb58-11e7-a088-f82819e1bcfa 这一段,并且不能用api

  • find({"xxx": "e5e1c8ee-cb58-11e7-a088-f82819e1bcfa"})

或者 ui

  • find({"xxx": "LUUID("e5e1c8ee-cb58-11e7-a088-f82819e1bcfa")"})

结果都是没法查询到的url

接下来先要明白的是MongoDB实际上存储的是一种叫作bson的类json数据格式(能够互换).因此方向有了接下来就是查询BSON里面对于UUID的定义了.spa

# 通常查所有返回的时候数据str类型的uuid,这时候没法直接回查,须要转换数据格式
# 引入两个包

from bson import UUIDLegacy
from bson.binary import UUID

# 例如你的uuid是e5e1c8ee-cb58-11e7-a088-f82819e1bcfa, 填进去返回的就是一个bson支持的UUID类型的数据
query = {"xxx": UUIDLegacy(UUID(<你的字符串类型的uuid>))}

# 若是你输出query就会发现会是下面这样子的
# {"xxx": UUIDLegacy('<你的UUID>')}

# 剩下就是查询语句而已了
conn = ...
db = conn[<表名>]
col = db[<集合名>]
col.find(query)
...


# 若是前提本身不会操做这些UUID的就在存储以前直接写入一个str的uuid。
# 我当时就没有意思数据类型带来的问题,觉得MongoDB会变成字符串.
# 不过这也有收获,知道bson还支持UUID这种数据类型复制代码
相关文章
相关标签/搜索