问题描述
给出此示例的三元组数组,实际的数组将是非常大的数据集,因此“需要速度”:
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 (将#修改为@)