在Swift中找到给定的Dictionary元素值的键

Shi*_*tia 0 swift

我的代码看起来像这样:

var dict = ["a": 1, "b": 2]

var valueInDict = 1
Run Code Online (Sandbox Code Playgroud)

我的问题是,是否可以仅使用值来访问密钥,在本例中为"a".

Gwe*_*oué 8

使用Dictionary值和键属性记录为具有相同顺序的事实:

if let index = dict.values.indexOf(valueInDict) {
    let key = dict.keys[index]
    print(key)
}
Run Code Online (Sandbox Code Playgroud)


das*_*ght 8

不可能通过键的值来获取键,因为多个键可以具有相同的值。例如,如果您制作这样的字典

let dict = [
    "a" : 7
,   "b" : 3
,   "c" : 11
,   "d" : 7
,   "e" : 3
,   "f" : 11
]
Run Code Online (Sandbox Code Playgroud)

并尝试找到 value 的键7,会有两个这样的键 -"a""d"

如果要查找映射到特定值的所有键,可以像这样迭代字典:

let search = 7
let keys = dict // This is a [String:int] dictionary
    .filter { (k, v) -> Bool in v == search }
    .map { (k, v) -> String in k }
Run Code Online (Sandbox Code Playgroud)

这将生成具有该search值的所有条目的键,或者当search字典中不存在该值时生成一个空数组。