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

辞書(Dictionary)の値からキーを取得する方法は、3つあります。
内包表記
1つ目は、内包表記を使う方法です
まず、[]を記述し、[]内でDictionaryのitems()をforループします。
forループの処理で、Dictionaryのキーをそのまま返します。
そして、forループの後にif文を記述します。
if文の条件式では、「value == 値」のように、辞書のvalueと対象の値を比較します。
result = [ key for key,value in dict.items() if value == 4]
上記の[]は、if文で比較した値を持つ全てのキーのリストを生成します。
使用例
numbers = { "one":1, "two":2, "ten":3, "four":4, "five":5, "四":4 }
result = [ key for key,value in numbers.items() if value == 4]
print(result) #['four', '四']
keys() + values()
2つ目は、keys()とvalues()を使う方法です。
まず、list()を呼び出し、引数でDictionaryからkeys()を呼び出します。
次に、上記のlist()の後に[]を記述します。
[]内にlist()を指定し、list()内でvalues()メソッドを呼び出します。
そして、values()メソッドを引数に指定したlist()からindex()メソッドを呼び出します。
index()メソッドの引数に、値を指定します。
#dictの値のキーを取得
result = list(dict.keys())[list(dict.values()).index(値)]
上記のlist()[]は、index()の引数に指定した値を持つキーを返します。
使用例
numbers = { "one":1, "two":2, "three":3, "four":4, "five":5 }
result1 = list(numbers.keys())[list(numbers.values()).index(3)]
result2 = list(numbers.keys())[list(numbers.values()).index(5)]
print(result1) #three
print(result2) #five
for文
3つ目は、for文を使う方法です。
まず、キーを格納するためのリストを用意します。
result = []
次に、Dictionary()のitems()をfor文でループします。
ルー処理で、for文で取得したDictionaryのvalueと特定の値が等しい時の条件式分岐をします。
そして、条件分岐した処理で、用意したリストからappend()メソッドを呼び出します。
append()メソッドの引数に、for文で取得したDictionaryのkeyを指定します。
for key,value in myDict.items():
if value == 値:
result.append(key)
上記のfor文は、if文の条件式でDictionaryのvalueと比較した値を、用意したリストに格納します。
使用例
numbers = { "one":1, "two":2, "壱":1, "three":3, "four":4, "five":5 , "first": 1}
result = []
for key,value in numbers.items():
if value == 1:
result.append(key)
print(result) #['one', '壱', 'first']
まとめ
辞書(Dictionary)の値(Value)からキー(Key)を取得する方法は、次の3つです。
- 内包表記を使う方法
- keys()とvalues()を使う方法
- for文を使う方法
コメント