【问题标题】:Convert dictionary's array to array of dictionary将字典数组转换为字典数组
【发布时间】:2020-02-18 09:11:57
【问题描述】:

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

输入:-

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

【问题讨论】:

  • 数组结构显示错误。 ```意外的令牌':' ```请检查!

标签: ios arrays swift dictionary


【解决方案1】:

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

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)

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      单班轮:

      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 至少有一个条目

      【讨论】:

        猜你喜欢
        • 2017-07-21
        • 2021-08-10
        • 1970-01-01
        • 2020-09-16
        • 2010-09-16
        • 2018-05-28
        • 2019-05-29
        • 2018-11-22
        • 1970-01-01
        相关资源
        最近更新 更多