どうも、ちょげ(@chogetarou)です。
辞書の値からキーを取得する方法を紹介します。
方法

辞書の値からキーを取得する方法は、2つあります。
1つだけ
1つは、値を1つだけ取得する方法です。
まず、辞書からfirstメソッドを呼び出します。
firstメソッドの引数「where」のクロージャーで「$1 == 値」を指定します。
そして、firstメソッドの結果のkeyプロパティにアクセスします。
//valueのキーを取得
let key = dict.first(where: { $1 == value })?.key
firstメソッドの戻り値のkeyプロパティは、値からキーを返します。
使用例
let numbers = [
"one" : 1,
"two" : 2,
"three" : 3,
]
let key = numbers.first(where: { $1 == 2 })?.key
print(key!) //"two"
複数
もう1つは、値から複数のキーを取得する方法です。
まず、辞書からfilterメソッドを呼び出します。
filterメソッドのクロージャーで「$1 == 値」を返します。
そして、filterメソッドの結果からmapメソッドを呼び出します、
mapメソッドのクロージャーで「$0.0」を返します。
//valueのキーを全て取得
let key = dicy.filter { $1 == value }.map { $0.0 }
上記のmapメソッドは、値のキーを全て取得できます。
使用例
let numbers = [
"one" : 1,
"two" : 2,
"three" : 3,
"いち" : 1,
"に" : 2,
"さん" : 3,
]
let keys = numbers.filter { $1 == 3 }.map { $0.0 }
print(keys) //["さん", "three"]
まとめ
辞書の値からキーを取得する方法は、次の2つです。
- firstメソッドで値のキーを1つだけ取得する方法
- filterメソッドとmapメソッドで値のキーを全て取得する方法
コメント