0

I am in trouble in making the array of dictionary. I need

["1.0" : [Park_N_Tap.GasStationList,Park_N_Tap.GasStationList,Park_N_Tap.GasStationList], "2.0" : [Park_N_Tap.GasStationList,Park_N_Tap.GasStationList,Park_N_Tap.GasStationList], "3.0" : [Park_N_Tap.GasStationList,Park_N_Tap.GasStationList,Park_N_Tap.GasStationList]]

form this

 [["1.0": Park_N_Tap.GasStationList], ["1.0": Park_N_Tap.GasStationList], ["1.0": Park_N_Tap.GasStationList], ["1.0": Park_N_Tap.GasStationList], ["1.0": Park_N_Tap.GasStationList], ["1.0": Park_N_Tap.GasStationList], ["1.0": Park_N_Tap.GasStationList], ["1.0": Park_N_Tap.GasStationList], ["1.0": Park_N_Tap.GasStationList], ["1.0": Park_N_Tap.GasStationList], ["1.0": Park_N_Tap.GasStationList], ["2.0": Park_N_Tap.GasStationList], ["2.0": Park_N_Tap.GasStationList], ["2.0": Park_N_Tap.GasStationList], ["2.0": Park_N_Tap.GasStationList], ["2.0": Park_N_Tap.GasStationList], ["2.0": Park_N_Tap.GasStationList], ["2.0": Park_N_Tap.GasStationList]] 

Please suggest me sweet and suitable answer.

Amrit Tiwari
  • 922
  • 7
  • 21

3 Answers3

1
let from = [["1.0": "Park_N_Tap.GasStationList"], ["1.0": "Park_N_Tap.GasStationList"], ["1.0": "Park_N_Tap.GasStationList"], ["1.0": "Park_N_Tap.GasStationList"], ["1.0": "Park_N_Tap.GasStationList"], ["1.0": "Park_N_Tap.GasStationList"], ["1.0": "Park_N_Tap.GasStationList"], ["1.0": "Park_N_Tap.GasStationList"], ["1.0": "Park_N_Tap.GasStationList"], ["1.0": "Park_N_Tap.GasStationList"], ["1.0": "Park_N_Tap.GasStationList"], ["2.0": "Park_N_Tap.GasStationList"], ["2.0": "Park_N_Tap.GasStationList"], ["2.0": "Park_N_Tap.GasStationList"], ["2.0": "Park_N_Tap.GasStationList"], ["2.0": "Park_N_Tap.GasStationList"], ["2.0": "Park_N_Tap.GasStationList"], ["2.0": "Park_N_Tap.GasStationList"]]

var to = [String:[String]]()

from.forEach { (dic) in
    dic.forEach({ (key,value) in
        var tempArray = to[key] ?? [String]()
        tempArray.append(value)
        to[key] = tempArray
    })
}

'to' is the result of you eventually need to, I don't know what Park_N_Tap.GasStationList, so I use string to show you see

[String:[String]] is out-of-order ,if you need order Array you can try

var to = from.reduce(NSMutableDictionary()) { (result, dic) -> NSMutableDictionary in
    dic.forEach({ (key,value) in
        var tempArray = result[key] as? [String] ?? [String]()
        tempArray.append(value)
        result[key] = tempArray
    })
    return result
    }.sorted(by: {($0.0.key as! String) < ($0.1.key as! String)})
曾祥林
  • 96
  • 4
0

try this code :-

var dummyData: [String :[Any]] =  ["1.0" : ["Park_N_Tap.GasStationList","Park_N_Tap.GasStationList","Park_N_Tap.GasStationList"], "2.0" : ["Park_N_Tap.GasStationList","Park_N_Tap.GasStationList","Park_N_Tap.GasStationList"], "3.0" : ["Park_N_Tap.GasStationList","Park_N_Tap.GasStationList","Park_N_Tap.GasStationList"]]
var newArray: [[String:Any]] = []
for eachItem in dummyData{
    var temp = [String:Any]()
    for eachValue in eachItem.value{
    var temp = [String:Any]()
    temp = [eachItem.key : eachValue]
        print(temp)
        newArray.append(temp)

    }
}
Anuraj
  • 1,242
  • 10
  • 25
0

sorry I was mistaken about conditions and results you can try this

let from = ["1.0" : ["Park_N_Tap.GasStationList","Park_N_Tap.GasStationList","Park_N_Tap.GasStationList"], "2.0" : ["Park_N_Tap.GasStationList","Park_N_Tap.GasStationList","Park_N_Tap.GasStationList"], "3.0" : ["Park_N_Tap.GasStationList","Park_N_Tap.GasStationList","Park_N_Tap.GasStationList"]]

var to = [[String:Any]]()

from.forEach { (key,value) in
    value.forEach({ (value1) in
        to.append([key:value])
    })
}
曾祥林
  • 96
  • 4