繁体   English   中英

Swift Dictionary获取值的关键

[英]Swift Dictionary Get Key for Values

我有一个字典定义为:

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

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

如何获取给定值的密钥。

let key = (drinks as NSDictionary).allKeysForObject("Orange") as! String
print(key)
//Returns an empty Array. Should return "Juice"
func findKeyForValue(value: String, dictionary: [String: [String]]) ->String?
{
    for (key, array) in dictionary
    {
        if (array.contains(value))
        {
            return key
        }
    }

    return nil
}

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

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

print(self.findKeyForValue("Orange", dictionary: drinks))

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

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

let keys = drinks.filter {
    return $0.1.contains("Orange")
}.map {
    return $0.0
}

结果将是一个String对象数组,表示匹配的键。

枚举所有字典条目并测试每个值列表中所需的值,并累积值所在的键。

例如,查找列表中包含所需值的所有饮品:

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

let value = "Orange"

var keys = [String]()
for (key, list) in drinks {
    if (list.contains(value)) {
        keys.append(key)
    }
}

print("keys: \(keys)")

键:[“软饮料”]

这是Swift 4中的一个简单解决方案:

let transport = ["bus": "red", "car": "white", "TARDIS": "blue"]

let key = (transport.filter { $0.value == "blue" }).first?.key
{
    print (key)
}

TARDIS

试试这个(快速):

(dic as NSDictionary).allKeysForObject(<#T##anObject: AnyObject##AnyObject#>)

它对我有用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM