2015-12-22 168 views
-3

說我有以下詞典[「梅西」:「170釐米」]檢查詞典鍵包含字符串

有沒有可能找到鍵值對,如果我只知道密鑰字符串的一部分。換句話說,如果我只有字符串「Lione」,是否有可能找到上面提到的鍵值對。

+1

是的,你可以訪問密鑰並搜索他們的匹配 – luk2302

+0

不是。你需要一個不同的數據結構。例如[Trie](https://en.wikipedia.org/wiki/Trie)。或者只是搜索所有的值,如果你沒有太多的值。 – Sulthan

回答

3
func findPartOfString(partOfKey: String, myDict: Dictionary) -> String { 
    for (key, value) in myDict { 
     if key.containsString(partOfKey) { 
      return value 
     } 
    } 
    return null 
} 

編輯:

下面是與Swift2一個新的更短的方式:

func findPartOfString(partOfKey: String, myDict: Dictionary) -> String { 
    for (key, value) in myDict where key.containsString(partOfString) { 
     return value 
    } 
    return null 
+0

謝謝,我要測試一下。 – NJanf

3
let filter = "Lionel" 
let dict = ["Lionel Messi" : "170cm", "Me" : "Taller"] 
let result = dict.keys.filter { $0.containsString(filter) } 
if let first = result.first { 
    print("match found: (\(first) => \(dict[first]!))") 
} 

輸出

發現

匹配:(梅西=>170釐米)

+0

我也會試試這個,謝謝。 – NJanf

+0

@NJanf ... luk2302提供的答案更多的是swift希望開發人員使用的類型。它減少了「for」循環的使用,並使代碼更簡潔一點。 – Karthik

+1

@Karthik,雖然我很欣賞這種方式,但我不確定我會同意這是「迅速想要的」。看到我更新的答案,爲swift 2中全新的循環。似乎這是完全適合這種情況。 – Tim