如何将数组解包为变量
how to unpack array into variables
假设我们有这个文档:
doc = {'foo': 1, 'bar': 2, id: 123}
我该怎么做才能拥有一对 foo 和 bar 值,id 并将它们分配给 2 个变量?我需要这个,这样我就可以在复杂的查询中使用这些变量,而不必多次复制/粘贴完全相同的 reql 命令。
这是我试过的:
(
r.expr(doc) # doc as input
.do(lambda d: [
# create the pair
[d['id'], r.uuid(d['id'].coerce_to('string'))],
# create the "values"
d.without('id').values()
])
.do(lambda x, y: # unpacking should happen here
# x should be the pair
# y should be the values of foo and bar
r.branch(
# do something with x,
# use y here,
...)
)
.map(lambda z:
# use also x and y here
# etc...
.run(conn)
)
但我做不到。
这个想法只是为变量赋值,以便在查询中使用,以提高可读性。
有什么想法吗?
您可以使用 r.do
在 ReQL 中绑定多个变量,例如:
r.expr(doc).do(lambda d: # doc as input
r.do(
[d['id'], r.uuid(d['id'].coerce_to('string'))],
d.without('id').values(),
lambda x, y:
# x is the pair
# y is the values of bar and foo
...))
假设我们有这个文档:
doc = {'foo': 1, 'bar': 2, id: 123}
我该怎么做才能拥有一对 foo 和 bar 值,id 并将它们分配给 2 个变量?我需要这个,这样我就可以在复杂的查询中使用这些变量,而不必多次复制/粘贴完全相同的 reql 命令。
这是我试过的:
(
r.expr(doc) # doc as input
.do(lambda d: [
# create the pair
[d['id'], r.uuid(d['id'].coerce_to('string'))],
# create the "values"
d.without('id').values()
])
.do(lambda x, y: # unpacking should happen here
# x should be the pair
# y should be the values of foo and bar
r.branch(
# do something with x,
# use y here,
...)
)
.map(lambda z:
# use also x and y here
# etc...
.run(conn)
)
但我做不到。 这个想法只是为变量赋值,以便在查询中使用,以提高可读性。 有什么想法吗?
您可以使用 r.do
在 ReQL 中绑定多个变量,例如:
r.expr(doc).do(lambda d: # doc as input
r.do(
[d['id'], r.uuid(d['id'].coerce_to('string'))],
d.without('id').values(),
lambda x, y:
# x is the pair
# y is the values of bar and foo
...))