我有一个json对象列表,如下所示:
test = [{"a": 1, "b": 2, "c": 3}, {"a": 4, "b": 5, "c":6}]
我想从上面的测试列表中获取'a'
和'c'
字段,以创建一个列表列表,如下所示:
[[1, 4], [3, 6]]
这个想法是列出a的所有值,然后是c的值。
当我使用弹拨时:
test.pluck(:a, :c)
我得到这样的输出:
[[1, 3], [4, 6]]
我尝试过一种方法,效果很好。
res = []
res << test.pluck(:a)
res << test.pluck(:c)
但我认为如果我得到一个或两个衬里解决方案会更好,
带或不带inbuilt function
,因为将来的字段数可能会增加。
您正在寻找以下内容,
%i(a c).map { |x| test.map { |e| e[x] } }
您可以在pluck
结果上使用Array#transpose
。它假定数组表示行或列并交换表示形式。
test.pluck(:a, :c).transpose
#=> [[1, 4], [3, 6]]