2017-03-15 20 views
0

如何獲取Swift中的字典中最後輸入的值?例如,我怎麼會得到價值「CCC」從下面:如何獲取Swift中Dictionary中的最後輸入值?

var dictionary = Dictionary<String, String>() 
dictionary.updateValue("AAA", forKey: "111") 
dictionary.updateValue("BBB", forKey: "222") 
dictionary.updateValue("CCC", forKey: "333") 
+1

字典沒有任何順序,所以在嘗試獲取最後一個值時毫無意義。你究竟在努力實現什麼? – rmaddy

+2

如果你需要保留一個訂單只是使用一個數組,或創建一個var來存儲最後一個鍵更新 –

+0

@rmaddy我想有一個字符串鍵,同時也有一個索引,因爲順序確實重要 – SmedleyDSlap

回答

0

如果您的密鑰進行排序,你可以嘗試:

var dictionary = Dictionary<String, String>() 
dictionary.updateValue("AAA", forKey: "111") 
dictionary.updateValue("BBB", forKey: "222") 
dictionary.updateValue("CCC", forKey: "333") 

print(dictionary.keys.sorted().last.map({ ($0, dictionary[$0]!) })) 
1

你是什麼之後通常被稱爲一個有序字典,即一個字典,記錄項目添加的順序。快速谷歌搜索成爲一個GitHub項目,可能適合你。

https://github.com/lukaskubanek/OrderedDictionary

以此作爲你的字典的類型,你可以只使用:

dictionary.last // returns Optional(("CCC", "333")) 

GitHub的頁面,對你將如何去添加這個類到你的項目的詳細信息。

0

詞典的要點是它們是不是有序。這就是爲什麼他們的查詢速度一般如此之快是因爲他們將元素劃分而不考慮其順序。

如果你想要特定順序的項目,你應該使用一個數組。是的,「排序字典」存在,但它們實際上只是數組頂部的字典式接口。它們不包含傳統字典帶來的好處。

如果你認爲你需要一個有序的字典,你可能需要考慮一個新的數據結構。

相關問題