如何在GremlinPython中使用lambda函数?
为了进行不区分大小写的搜索,我尝试了以下代码,
g.V().filter(lambda: "x -> x.get().value('title') == 'open', 'gremlin-groovy'").toList()但是,有以下错误,
E File "<string>", line 1
E lambda x -> x.get().value('title') == 'open', 'gremlin-groovy'
E ^
E
SyntaxError: invalid syntax发布于 2022-08-02 22:09:30
使用带空TinkerGraph的Gremlin,我能够让它工作。但是,当显式指定gremlin-groovy时,我一开始无法使它工作。关于这一问题的解释,请参阅“更新”一节。
>>> 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
>>> g.V().map(lambda: 'x->x.get().value("p")=="hello"').next()
False
>>> g.V().map(lambda: 'x->x.get().value("p")=="Hello"').next()
True忽略案件
>>> g.V().map(lambda: 'x->x.get().value("p").toUpperCase()=="HELLO"').next()
True有几点要注意:
toUpperCase而不是Python通用,建议避免使用lambda/闭包,因为它们并不是所有启用TinkerPop的数据库都支持的。更新
要使lambda工作,在gremlin-groovy存在的情况下,需要额外使用一对括号。这实际上是创建lambda和脚本语言提示的元组。
>>> g.V().map(lambda: ('x->x.get().value("p").toUpperCase()=="HELLO"','gremlin-groovy')).next()
Truehttps://stackoverflow.com/questions/73202987
复制相似问题