2015-12-22 171 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