Swift Dictionary获取值的关键

Sta*_*tik 7 ios swift swift2

我有一个字典定义为:

let drinks = [String:[String]]()

drinks = ["Soft Drinks": ["Cocoa-Cola", "Mountain Dew", "Sprite"], 
"Juice" :["Orange", "Apple", "Grape"]]
Run Code Online (Sandbox Code Playgroud)

如何获取给定值的密钥.

let key = (drinks as NSDictionary).allKeysForObject("Orange") as! String
print(key)
//Returns an empty Array. Should return "Juice"
Run Code Online (Sandbox Code Playgroud)

abi*_*tom 15

func findKeyForValue(value: String, dictionary: [String: [String]]) ->String?
{
    for (key, array) in dictionary
    {
        if (array.contains(value))
        {
            return key
        }
    }

    return nil
}
Run Code Online (Sandbox Code Playgroud)

调用上面的函数,它将返回一个可选的String?

let drinks = ["Soft Drinks": ["Cocoa-Cola", "Mountain Dew", "Sprite"],
        "Juice" :["Orange", "Apple", "Grape"]]

print(self.findKeyForValue("Orange", dictionary: drinks))
Run Code Online (Sandbox Code Playgroud)

此函数将仅返回已传递值的数组的第一个键.


Ada*_*dam 8

在Swift 2.0中,您可以过滤字典,然后将结果映射到数组.

let keys = drinks.filter {
    return $0.1.contains("Orange")
}.map {
    return $0.0
}
Run Code Online (Sandbox Code Playgroud)

结果将是String表示匹配键的对象数组.