2017-06-13 57 views
-1

喜重指数字典我有一个类型的词典:删除和斯威夫特

1:[[12.342,34.234],[....,...],....] 2:[[......],[....]]....

现在我想知道是否有功能进行删除细节键通讯员价值和功能例如,如果我将值记者删除到密钥2,则密钥3应该变为密钥2等等。

+3

如果键是一个数字,为​​什么不只是使用一个数组,并通过索引访问它呢? – vikingosegundo

+0

他们是坐标数组,每个数组区分一条路线@vikingosegundo –

+2

为什么你需要一个字典在他们周围,有int键? – vikingosegundo

回答

1

我认为你需要使用一个数组,而不是一个字典

var elms: [[[Double]]] = [ 
    [[0.1],[0.2, 0.3]], 
    [[0.4], [0.5]], 
    [[0.6]], 
] 

elms.remove(at: 1) // remove the second element 

print(elms) 

[ 
    [[0.10000000000000001], [0.20000000000000001, 0.29999999999999999]], 
    [[0.59999999999999998]] 
] 

是输出值略微偏离原有的different

0

要删除一个键和值,只需要dict[key] = nil

至于重新索引,字典键没有任何特定的顺序,并将所有的值转移到不同的键是不是如何设计字典的工作。如果这对你很重要,也许你应该使用类似于一对数组的东西。

1

词典没有排序。这意味着“密钥3”变为“密钥2”不是受支持的方案。如果按键的顺序与插入它们的顺序相同,那么到目前为止您已经很幸运了,因为这绝对不能保证。

如果你想要排序并且你的键/值对的列表很小(大约是一百个左右),你应该考虑使用一个数组元组:[(Key, Value)]。这保证了订购。如果你需要比那个更快的键或更快的键查找,你应该找到一种方法来定义键之间的顺序关系(例如,你可以说应该总是在其他键之后),并使用排序的集合,如this one

+0

谢谢我以为在命令字典处使用* .sorted {($ 1.key> $ 0.key)}函数 –