查询json dicts
gymnasdicts的Python项目详细描述
体操运动员
查询json dicts
- 免费软件:Apache软件许可证2.0
- 文档:https://gymnasdicts.readthedocs.io。在
特点
gymnasdicts是一个轻量级库,用于在Python中查询json兼容的嵌套字典。在
这个包公开了一个类,其中有三个函数可以链接在一起,以便 遵循类似sql的约定。在
查询
查询是库的入口点,它是 被所有其他方法操作并返回。在
选择
select标识并命名要使用的json对象中的嵌套键。 第一个参数是要查询的json对象。 其余参数采用关键字arg形式,其中:
- 这些值是受限制的jsonpath,不允许进行筛选。在
- 键是用户定义的变量,上面的值被分配给这些变量。在
其中
其中过滤“按值选择”的结果。它的参数是lambda函数 其中参数名对应于select中定义的变量。在
进入
into定义输出的形状。它唯一的参数是lambda函数 其中参数名对应于select中定义的变量。在
示例
fromgymnasdictsimportselectpayload={"sales":[{"id":1,"number":34,"date":"2020-01-04"},{"id":2,"number":12,"date":"2020-02-05"},{"id":3,"number":-4,"date":"2020-03-06"},],"prices":[{"id":1,"cost":{"value":0.98,"denomination":"pounds"}},{"id":2,"cost":{"value":34,"denomination":"pence"}},{"id":3,"cost":{"value":1.02,"denomination":"pounds"}},],"accounting":[{"denomination":"pounds","multiplier":1,},{"denomination":"pence","multiplier":0.01,}]}q=Query(payload)a=q.select(sales_id="$.sales[:].id",number="$.sales[:].number",price_id="$.prices[:].id",cost="$.prices[:].cost[:].value",denom_1="$.prices[:].cost[:].denomination",denom_2="$.accounting[:].denomination",multiplier="$.accounting[:].multiplier")w=s.where(lambdasales_id,price_id:sales_id==price_id,lambdanumber:number>0,lambdadenom_1,denom_2:denom_1==denom_2)i=w.into(lambdanumber,cost,multiplier:number*cost*multiplier)assertsum(i)==37.4
常见问题
连接呢?
select实际上是所有提供的jsonpath上的笛卡尔连接, i、 e
^{pr2}$相当于
selectA.aasx,B.basy,C.caszfromTblasA,TblasB,TblasC
这样其中可以用于在上执行的工作。在
这太可怕了,那记忆呢?!
发电机负责这个。在
学分
此包是用Cookiecutter和audreyr/cookiecutter-pypackage项目模板创建的。在
感谢kclaurelie关于select/where和keys/values之间关系的有用讨论。在
历史
- PyPI的第一个版本。在
- 项目
标签: