我有一个对象列表如下
[["GX 470","Model"],["Lexus","Make"],["Jeep","Make"],["Red","Color"],["blue","Color"]]
我希望将其转换为
{"Model":["GX 470"],"Make":["Lexus","Jeep"],"Color":["Red", "blue"]}
我试过
list.groupBy{ it[1] }
但那会让我回头
{"Model":[["GX 470","Model"]],"Make":[["Lexus","Make"],["Jeep","Make"]],"Color":[["Red","Color"],["blue","Color"]]}
答案 0 :(得分:3)
这是因为 groupBy
不会从原始对象中删除它所分组的元素,因此您可以获得所有原始数据,只需按键分组。
您可以使用 inject
(和 withDefault
)进行更多自定义分组:
list.inject([:]。withDefault {[]}){map,elem - >
 map [elem [1]]<< ELEM [0]
地图
}
 代码>


答案 1 :(得分:3)
您可以采取中间结果,然后再将其转换一步:
list.groupBy{ it[1] }.collectEntries{ k, v -> [(k):v*.get(0)] }
答案 2 :(得分:0)
id