首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在GremlinPython中使用lambda函数?

如何在GremlinPython中使用lambda函数?
EN

Stack Overflow用户
提问于 2022-08-02 06:38:52
回答 1查看 92关注 0票数 0

如何在GremlinPython中使用lambda函数?

为了进行不区分大小写的搜索,我尝试了以下代码,

代码语言:javascript
复制
g.V().filter(lambda: "x -> x.get().value('title') == 'open', 'gremlin-groovy'").toList()

但是,有以下错误,

代码语言:javascript
复制
E             File "<string>", line 1
E               lambda x -> x.get().value('title') == 'open', 'gremlin-groovy'
E                         ^
E 

      SyntaxError: invalid syntax
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-02 22:09:30

使用带空TinkerGraph的Gremlin,我能够让它工作。但是,当显式指定gremlin-groovy时,我一开始无法使它工作。关于这一问题的解释,请参阅“更新”一节。

代码语言:javascript
复制
>>> g.addV('test').property('p','Hello').next()
v[4]
>>> g.V().map(lambda: 'x->x.get().values("p")[0]=="hello"').next()
False
>>> g.V().map(lambda: 'x->x.get().values("p")[0]=="Hello"').next()
True

或者,使用value而不是values

代码语言:javascript
复制
>>> g.V().map(lambda: 'x->x.get().value("p")=="hello"').next()
False
>>> g.V().map(lambda: 'x->x.get().value("p")=="Hello"').next()
True

忽略案件

代码语言:javascript
复制
>>> g.V().map(lambda: 'x->x.get().value("p").toUpperCase()=="HELLO"').next()
True

有几点要注意:

  1. "lambda“使用语法,我不得不使用toUpperCase而不是Python通用,建议避免使用lambda/闭包,因为它们并不是所有启用TinkerPop的数据库都支持的。

更新

要使lambda工作,在gremlin-groovy存在的情况下,需要额外使用一对括号。这实际上是创建lambda和脚本语言提示的元组。

代码语言:javascript
复制
>>> g.V().map(lambda: ('x->x.get().value("p").toUpperCase()=="HELLO"','gremlin-groovy')).next()
True
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73202987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档