0

是否有任何可能的方法将以下结构转换为给定结构

输入:-

var dic : [String:Array<Int>] = [
    "array1": [1,1,1],
    "array2": [2,2,2],
    "array3": [3,3,3]
]

预期输出:-

var result = [
    [
        "array1" : 1,
        "array2" : 2,
        "array3" : 3
    ],[
        "array1" : 1,
        "array2" : 2,
        "array3" : 3
    ],[
        "array1" : 1,
        "array2" : 2,
        "array3" : 3
    ]
]
4

3 回答 3

0

试试这个逻辑,我希望它会起作用...... :)

var dic : [String:Array<Int>] = [
    "array1": [1,1,1],
    "array2": [2,2,2],
    "array3": [3,3,3]
]

var finalresult = Array<Any>()
var keys = Array(dic.keys)


for i in 0...dic["array1"]!.count-1{
   var arr2 = Array<Any>()
    for j in 0...keys.count-1{
        var arr1 = [String:Int]()

        arr1[keys[j]] = dic[keys[j]]![j]
        print(arr1)
        arr2.append(arr1)
    }
    print(arr2)
    finalresult.append(arr2)
}
print(finalresult)

最终结果是您的输出。:)

于 2020-02-18T10:09:13.453 回答
0

单班轮:

var dic : [String:Array<Int>] = [
    "array1": [1,1,1],
    "array2": [2,2,2],
    "array3": [3,3,3]
]

let result = dic.values.first!.indices.map {index in dic.mapValues {$0[index]} }
print(result)
//->[["array3": 3, "array2": 2, "array1": 1], ["array3": 3, "array2": 2, "array1": 1], ["array3": 3, "array2": 2, "array1": 1]]

假设:

  • 中的所有值都dic具有相同的大小
  • dic至少有一个条目
于 2020-02-18T13:54:37.433 回答
0

这是一个两步解决方案,首先创建一个空集合结构,然后用值填充它

var converted: [[String: Int]] = []

for _ in 0..<dic.count {
    converted.append([:])
}

for (key, value) in dic {    
    for (index, number) in value.enumerated() {
        converted[index][key] = number
    }
}
于 2020-02-18T10:21:01.137 回答