2017-06-13 101 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)}函數 –