The best way to do this is with an eq_join
like so:
r.table("A")
.map(lambda x:
x.merge({
"b_list" :
x["b_list"].eq_join(lambda x: x, r.table("B"))["right"]})
For a single document:
r.table("A").get(pk)
.do(lambda x:
x.merge({
"b_list" :
x["b_list"].eq_join(lambda x: x, r.table("B"))["right"]})