跳转到主要内容

Kids数据操作助手。

项目描述

Latest PyPI version Number of PyPI downloads Travis CI build status Test coverage

kids.data 是一个Python库,提供数据管理助手。

它是“Kids”库(即“保持简单”)的一部分。

成熟度

此代码处于alpha阶段。它尚未在Windows上测试。API可能会更改。这更像是持续反思的草稿。

我应该补充的是,这可能还没有准备好展示。尽管如此,这些函数中的许多在项目中每天都会使用,我厌倦了为每个项目重写它们。

特性

使用 kids.data

  • 您将有一个用于模糊匹配元素的匹配库

  • 一个格式化概念,帮助您将任何类型的数据格式化为另一种类型

  • 一种在命令行上显示记录表的方法

  • 一些日常缺失的操作集合元素的功能

安装

由于 kids.data 可在PyPI上获得,因此您无需下载代码的GIT版本。因此,您应该能够运行

pip install kids.data

如果您已下载了GIT源代码,则可以通过传统方式安装当前版本

python setup.py install

如果您没有GIT源代码,但想从GitHub获取最新master或分支,您也可以

pip install git+https://github.com/0k/kids.data

甚至选择特定的修订版(分支/标签/提交)

pip install git+https://github.com/0k/kids.data@master

用法

mdict

mdict 是通过解析键一次访问嵌套字典,请查看此

>>> from pprint import pprint as pp
>>> from kids.data.mdict import mdict

>>> d = mdict({'a': {'b': {'y': 0}}, 'x': 1})
>>> d['a.b.y']
0
>>> d.get('a.b.z', 3)
3
>>> d['a.b']
m{'y': 0}

您可以将您的mdict配置为使用“/”,如果需要更多,您可以构建自己的键分词器来将字符串分解成标记。

>>> from kids.data.mdict import CharTokenizer

>>> d = mdict({'a': {'b': {'y': 0}}, 'x': 1}, CharTokenizer('/'))
>>> d['a/b/y']
0

当然,设置项的工作方式相同。

>>> d['a/b/z'] = 2
>>> d
m{'a': {'b': {'y': 0, 'z': 2}}, 'x': 1}

并且删除项。

>>> del d['a/b']
>>> d
m{'a': {}, 'x': 1}

请注意,即使有转义字符或空键,分词器也非常稳定。

>>> d[r'a/b\/c//d'] = 9
>>> d
m{'a': {'b/c': {'': {'d': 9}}}, 'x': 1}

而将键/值展开是通过flat属性完成的。

>>> pp(d.flat)
{'a/b\\/c//d': 9, 'x': 1}

如果您只想在嵌套字典中使用一次,所有函数都可供使用。

>>> from kids.data.mdict import mset, mget, mdel

>>> dct = {'a': {'b': {'y': 0}}, 'x': 1}
>>> mget(dct, 'a.b.y')
0
>>> mset(dct, 'a.b.z', 2)
>>> pp(dct)
{'a': {'b': {'y': 0, 'z': 2}}, 'x': 1}

>>> mdel(dct, 'a.b')
>>> pp(dct)
{'a': {}, 'x': 1}

图形

graph提供了一组用于处理图形的功能。以无关的方式,这意味着您可以以任何您想要的格式存储您的图形。您需要做的只是提供一个函数来获取相关节点。

使用cycle_exists函数的示例

>>> from kids.data.graph import cycle_exists

>>> graph = {1: [2, 3], 2: [1]}
>>> get_children = lambda n: graph.get(n, [])

>>> cycle_exists(1, get_children)
True

>>> cycle_exists(3, get_children)
False

由于节点3是叶子节点,因此没有从它开始的循环。

您可以获取一组元素(叶子是一个没有子节点的最终节点)的leafage。这个leafage是从给定元素可以到达的所有叶子。

>>> from kids.data.graph import leafage

>>> list(leafage([1, 4], get_children))
[3, 4]

很棒的是reorder,它将尝试对给定列表进行最小更改,但会交换元素以保证没有依赖性问题,这意味着子节点将出现在父节点之前。这对于加载依赖于其他模块的模块非常有用。

>>> from kids.data.graph import reorder

>>> graph = {2: [1], 3: [2]}
>>> reorder([1, 3, 2], get_children)
[1, 2, 3]

dct

合并字典应该是Python的基础功能之一,但它缺失了很多人(参见关于非原地合并字典的stackoverflow问题关于合并字典非原地)。

您可以使用merge将多个字典合并成一个。

>>> from pprint import pprint
>>> from kids.data.dct import merge

>>> pp(merge({'a': 1}, {'a': 2, 'b': 1}, {'c': 3}))
{'a': 2, 'b': 1, 'c': 3}

贡献

欢迎任何建议或问题。非常欢迎推送请求,请查看指南。

推送请求指南

您可以发送任何代码。我会查看它,并将其集成到代码库中,并将您作为作者留下。这个过程可能需要时间,并且如果您遵循以下指南,将花费更少的时间。

  • 使用PEP8或pylint检查您的代码。尽量保持80列宽。

  • 按最小的关注点分隔您的提交。

  • 每次提交都应通过测试(以允许轻松的二分查找)。

  • 每个功能/错误修复提交应包含代码、测试和文档。

  • 优先考虑对排版或代码外观进行小的更改的提交。这些应在提交摘要中用!minor标记。

  • 提交消息应遵循gitchangelog规则(检查git日志以获取示例)。

  • 如果提交修复了问题或完成了功能实现,请在摘要中说明。

如果您对这里没有回答的指南有任何问题,请检查当前的git log,您可能会找到以前的提交,它将向您展示如何处理您的问题。

许可证

版权(c)2015 Valentin Lab。

根据BSD许可证许可。

变更日志

0.0.5 (2015-03-04)

新功能

  • 添加了MultiDictReader类,允许从多个字典中读取。 [Valentin Lab]

    这提供了一种有趣的延迟评估合并字典的方法。此外,多深度字典可以方便地合并。

  • 添加了AttrDictAbstract,有助于从小的方法子集创建attr-dict模式。 [Valentin Lab]

  • 引入了DictLikeAbstract,可以从小的子集快速编写完整的字典类似API。 [Valentin Lab]

  • 添加了untokenize概念,它将撤销tokenize工作。 [Valentin Lab]

  • .items()不再展开,请使用.flat

    .flat属性替换了由.items()完成的项展开。

    在这个过程中,添加了 .keys()

  • 字典现在通过引用传递,mdict 为它提供了扩展的 API。[Valentin 实验室]

  • [mdict] 清理了代码并提供了一个更一致的 API。[Valentin 实验室]

修复

  • 在迭代 mdict 的键时,这些键没有适当地引用。[Valentin 实验室]

0.0.4 (2015-02-06)

新功能

  • [dct] 添加了 deep_copy 快捷方式。[Valentin 实验室]

    这是为了获取所有有用的字典相关内容,而无需了解所有所需的包。并且遵循 pep8 规范在变量/函数名上(即:deep_copy 而不是 deepcopy)。

  • [dct] 添加了 merge 用于合并字典。[Valentin 实验室]

0.0.3 (2015-02-05)

新功能

  • [graph] 添加了 graph 函数。[Valentin 实验室]

  • [mdict] 添加了 mdict 模式。[Valentin 实验室]

  • [lib] 添加了 half_split_on_predicate。[Valentin 实验室]

  • [lib] 为 first 添加了默认参数。[Valentin 实验室]

0.0.2 (2015-01-20)

新功能

  • 支持 Python3 并添加了测试以提高覆盖率。[Valentin 实验室]

  • [match] 添加了匹配和模糊匹配库。[Valentin 实验室]

  • [fmt] 在记录行显示中移除了所有尾随空格。[Valentin 实验室]

0.0.1 (2014-05-23)

  • 首次导入。[Valentin 实验室]

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

kids.data-0.0.5.tar.gz (26.9 kB 查看哈希值)

上传时间

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误日志StatusPageStatusPage状态页面