是否有类似Python对象的jQuery选择器?

时间:2013-04-09 22:40:03

标签: python

选择器,如jQuery选择器,CSS选择器和XPATH都很酷。

问题是否有人为Python对象编写了类似的内容,表示为嵌套原语(列表,字符串,元组等)?

(注意:如果这些对象需要非循环,我认为对大多数情况来说,这并不是极端限制。)

简单示例如果我们有数据,

x = [
  {'xyz': 3},
  {'xyz': 4}
]

然后,如果有人可以写sel("[].xyz", x)之类的东西并且回来(可能是对[3, 4]的引用,那就太好了。

第二个简单示例如果我们有数据,

x = [{'a': {'b': [1, 2]}}]

然后,也许我们可以编写类似sel("[].a.b[]", x)的内容并获取[1, 2]

1 个答案:

答案 0 :(得分:2)

存在“jQuery选择器,CSS选择器和XPATH”的原因是因为它很难查询DOM,CSS和XML。

然而,Python通常非常出色地提供了清晰简洁地重新组织/查询数据结构的方法。

您的示例sel("[].xyz", x)将以惯用语写出:

[d['xyz'] for d in x]

只有五个字符,可以说更清晰。您的第二个示例sel("[].a.b[]", x)将以惯用语编写

list(itertools.chain(*[d['a']['b'] for d in x]))

虽然更详细,但不那么模糊(我们怎么知道列表需要在你的例子中展平)。

我认为,像语言这样的查询所期望的功能完全存在于以下功能集中:

  1. 字典
  2. 列表理解(和词典/集合理解)
  3. 列表切片
  4. itertools模块