获取相同键的值

时间:2017-04-07 06:58:32

标签: arrays swift dictionary

我制作字典数组时遇到了麻烦。我需要

["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]]

形成这个

 [["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]] 

请建议我甜蜜而合适的答案。

3 个答案:

答案 0 :(得分: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
    })
}

'到'是你最终需要的结果,我不知道Park_N_Tap.GasStationList是什么,所以我用字符串给你看看

[String:[String]]是无序的,如果你需要订购数组,你可以尝试

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)})

答案 1 :(得分:0)

试试这段代码: -

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)

    }
}

答案 2 :(得分:0)

抱歉,我误解了你可以尝试的条件和结果

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])
    })
}