Dictionary(init(grouping:by:))
在我需要按某些属性对数组元素进行分组时工作正常。
我得到的是:
{
key1: [
value1,value2,value3
],key2: [
value4,value5,value6
]
}
但是,我需要进一步转换数组,将每个分区分组为更小的组,以使生成的数据结构具有两层:
{
key1: {
anotherKey1: [
value1,],anotherKey2: [
value2,value3]
},key1: {
anotherKey3: [
value4,anotherKey4: [
value5,value6]
},}
获得此结果的最简单方法是什么?目前,我必须遍历第一个字典初始化程序调用的结果:
let grouped = Dictionary(grouping: Array(source),by: {$0.key1)
var grouped2 = [KeyType1 : [KeyType2? : [ValueType]]]()
for pair in grouped {
if let key = pair.key {
grouped2[key] = Dictionary(grouping: pair.value,by: {$0.key1})
}
}
print(grouped2)
这正是我想要的结果:两级数组字典。
但是我怀疑,有一种更简单的方法可以达到相同的结果,而无需手动插入每个键/值对。