2016-05-22 1 views
1

Допустим, у нас есть этот документ:как распаковать массив в переменные

doc = {'foo': 1, 'bar': 2, id: 123} 

Как я могу сделать так, что я могу, пару с Foo и штриховых значений, идентификатор и присвоить их 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) 
) 

Но я не могу сделать эту работу. Идея состоит только в том, чтобы присваивать значения переменным, которые будут использоваться внутри запроса, для целей удобочитаемости. Некоторые идеи?

+0

Я не совсем уверен, что вы пытаетесь спросить. Можете ли вы дать нам результат, который вы ожидаете или что-то еще. –

+0

удалил тег python и добавил больше информации –

ответ

1

Вы можете связать несколько переменных в ReQL с помощью r.do, например:

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 
     ...)) 
+0

Omg, как я пропустил это, действительно !!! –