一个最简单的python库,用于轻松、高效地操作嵌套数据结构。
carve的Python项目详细描述
雕刻
一个最简单的python库,用于轻松、高效地操作嵌套数据结构。
看一看:
>>> from carve import treemap
>>> obj = {"john": {"doe": [{"puma": "yes", "adidas": None}]}}
>>> treemap(obj, remove_empty)
{"john": {"doe": [{"puma": "yes"}]}}
>>> treemap(obj, lambda k,v,p: ("PUMA", "puma") if k == "puma" else (k,v))
{"john": {"doe": [{"PUMA": "puma", "adidas": None}]}}
快速启动
使用pip/pipenv/etc进行安装(我们建议poetry用于SANE依赖关系管理):
$ poetry add carve
使用每个操作的k,v,p
上下文转换词典:
- K键。
- V值。
- p-path,以元组的形式:(“john”,“doe”)表示嵌套键“john.doe”。
并返回一个键值元组:(key, value)
。您可以:
- 返回自定义值以同时更改键和值
("foo", "bar")
- 只需修改一个键:
("foo", v)
- 只需修改一个值:
(k, "bar")
- 删除当前条目:
(None, None)
- 根据当前路径决定要做什么:
(None, None) if "secret" in p else (k,v)
内置
您可以使用以下内置选项进行快捷操作:
fromcarveimporttreemap,mapkey,mapval,remove,on_key,remove_empty,flowtreemap(target,remove(lambdak,v,p:k=="adidas"))treemap(target,mapval(lambdak,v,p:"X"iflen(p)>2elsev))treemap(target,mapkey(lambdak,v,p:"X"+viflen(p)>2elsek))treemap(target,on_key("puma",lambdak,v,p:(k,"X")))treemap(target,remove_empty)# multiple builtins, left-to-right with 'flow'asserttreemap(target,flow(scream,remove_empty))
谢谢:
向所有人致意-你做到了,谢谢!
版权所有
版权所有(c)2018@jondot。有关详细信息,请参见LICENSE。