数据结构的上下文

vcontext的Python项目详细描述


vcontext包提供单个对象Context。上下文是 具有自定义项访问权限的字典式数据结构。你可以 通过点访问访问您的数据。上下文本身不包装数据, 更确切地说,只是访问它们。上下文具有数据所在的data属性 存储。

安装

vContext在pypi上,所以您 可以简单地:

pip install vcontext

__getitem__vs__getattribute__

对于Context,我决定使用__getitem__方法,因为 希望对列表/元组也有一致的点访问。这会是 无法使用__getattr__

项目

项是点分隔的值路径。此项被拆分,值为 具有以下规则*字符串-访问字典项或对象 属性*整数-访问列表项*第一部分必须为字符串 (因为上下文是字典)

示例:

context=Context({'status':200,'message':'OK','result':[{'user':{'username':'phonkee','name':'Peter Vrba'}}]})assertcontext['result.0.user.username']=='phonkee'assertcontext['status']==200

如果找不到数据,则对 找不到。context提供了get方法,您可以在其中指定 如果找不到值,则为默认值,这将永远不会引发异常。

生成项:

如果上下文只支持get of values,那么它将是无用的。上下文有 还支持根据给定的 item。让我们从前面的示例构建一个结构:

context=Context()context['status']=200context['message']='OK'context['result.0.user.username']='phonkee'context['result.0.user.name']='Peter Vrba'assertcontext.data=={'status':200,'message':'OK','result':[{'user':{'username':'phonkee','name':'Peter Vrba'}}]}

现在我们尝试删除项目

delcontext['result.0']assertlen(context['result'])==0

那个可爱的小帮手不是吗?

。键(项=无):

上下文还支持keys方法。通过调用此方法上下文 递归遍历对象。它支持dict/list,支持自定义 对象它只返回对象键。

context=Context()context['hello.world']='yay'assertcontext.keys()==['hello.world']

原料药:

上下文提供以下方法:

  • .copy()-deepcopies数据并返回新上下文
  • .dumps(item=None)-转储到json,属性:
    • item-要转储到json的项
  • .items(**kwargs)-键值项(元组键,值)的列表, **kwargs传递给keys方法
  • .iteritems(**kwargs)-项的生成器版本,**kwargs 传递给keys方法
  • keys(item=None)-返回所有键的列表,属性:
    • item-要转储到json的项

贡献:

贡献是受欢迎的,还有很多部分要做 增强。

待办事项:

  • 添加对特殊列表键append的支持,以便我们可以追加到列表。 例如:

    context['result.usernames.__append__']='phonkee'

作者

彼得·维巴(冯基)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java是否在servlet中检索上一页路径?   Java抱怨在开关的默认情况下未初始化最终字段   Java泛型:为什么编译器不能判断这个类<t>对象与这个类的类型参数的对象的类具有相同的类型?   Java:继承方法中使用的私有变量   HibernateJava。ClassCastException:java。lang.Integer不能强制转换为abc。def。我的项目。奥姆。EmployeeTopMetaData   http java发布和下载文件   java改进条件检查   java如何将2d数组的条目作为键放在地图中   java如何获取传递给运行时的值。getRuntime。JUnit测试用例中的exit(value)   java注释来创建所有可能的构造函数   自动建议列表:java。lang.IllegalArgumentException:在XPath表达式为null时找不到元素   为什么MapAPI在Java中不提供流功能?   gradle不导入本地java库   尽管我使用的是SessionCreationPolicy,java Spring安全性似乎仍在使用会话。无国籍   使用java查找MongoDB中数组元素的平均值