感觉“需要速度”使用reduceinto:_ :)对包含三元组元素的数组进行计数的元素

问题描述

给出此示例的三元组数组,实际的数组将是非常大的数据集,因此“需要速度”:

let usedIndicies2 = [
    [0,1,2]
    [2,3],[1,4,[3,5],[6,7,8],[8,9],[7,10,[9,11],[12,2,13],[13,14],[2,3,[14,15],5,[15,16],[5,17,[16,18],[19,8,20],[20,21],9,[21,22],11,[22,23],[11,24,[23,25],14,26],[26,27],15,[27,28],16,[28,29],18,[29,30],[18,20,[30,31],21,[31,32],22,[32,33],23,[33,34],27,35],[35,36],28,[36,37],29,[37,38],30,[38,39],31,[39,40],32,[40,41],33,[41,42],34,[42,43],[44,35,45],[45,46],36,[46,47],37,[47,48],38,[48,49],39,[49,50],40,[50,51],41,[51,52],42,[52,53],43,[53,54],[43,55,[54,56],]

使用swift ,查找此数组类型的每个元素的计数,同时保留三元组,因此输出如下所示:

let keyValuePairs =[
  [[0: 1],[1: 3],[2: 5]],[[2: 5],[3: 6]],[[1: 3],[4: 2],[[3: 6],[5: 4]],[[6: 1],[7: 3],[8: 5]],[[8: 5],[9: 6]],[[7: 3],[10: 2],[[9: 6],[11: 4]],// etc. ...
]

我只是建议建议“ reduce(into”),因为它看起来是可能的,但也许完全是更好/更快/更强的东西。

不必保留三元组的顺序,但必须保留三元组内元素的顺序:例如,第一个和第二个需要保持[[0:x],[1:x],[2:x]],[[2:x],[1:x],[3:x]],例如,订单可以[ 2:x],[1:x],[3:x]],[[0:x],[1:x],[2:x]]。

到目前为止,我已经可以使用下面的代码构建正确的组织,感觉可以通过reduce(into:_ :)来解决,但我无法正确地“计数” “元素。我留下的代码不正确,显然是因为每次都会初始化,但是想显示出我到目前为止的情况:

let keyValuePairs = usedIndicies2.reduce(into: [[[UInt32:Int]]]()) { (array,entry) in

    var dict0:[UInt32:Int] = [UInt32:Int]()
    var dict1:[UInt32:Int] = [UInt32:Int]()
    var dict2:[UInt32:Int] = [UInt32:Int]()

    dict0[entry[0],default: 0] += 1
    dict1[entry[1],default: 0] += 1
    dict2[entry[2],default: 0] += 1

    var array012:[[UInt32:Int]] = [[UInt32:Int]]()

    array012.append(dict0)
    array012.append(dict1)
    array012.append(dict2)

    array.append(array012)
}

print("keyValuePairs:",keyValuePairs)

此部分工作代码的输出如下所示

let keyValuePairs** = [
    [[0: 1],[1: 1],[2: 1]],[[2: 1],[3: 1]],[[1: 1],[4: 1],[[3: 1],[5: 1]],[7: 1],[8: 1]],[[8: 1],[9: 1]],[[7: 1],[10: 1],[[9: 1],[11: 1]],// etc...
]

将非常感谢您的见解

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)