파이썬의 해시 테이블 자료형인 딕셔너리에서 key를 가지고 값을 얻는 방법은 .get() 메서드를 사용하거나 dict_name[key] 형태로 index 하는 것이다. (참고: rollingsnowball.tistory.com/108)
그런데 value를 알고 있을 때, 그 값을 가지는 key를 찾는 것은 좀 더 까다롭다.
1. dict_name.items()를 통해서 key, value 쌍을 만들로 for 반복문을 돌려, 일일이 원하는 값과 같은지 비교한다.
my_dict ={"John":1, "Michael":2, "Shawn":3}
def get_key(val):
for key, value in my_dict.items():
if val == value:
return key
return "There is no such Key"
print(get_key(1))
print(get_key(2))
[out]
John
Michael
2. key 따로, value 따로 리스트를 만든 다음, value의 index를 얻어서 key 리스트에 넣어 찾는다.
my_dict ={"John":1, "Michael":2, "Shawn":3}
list_of_key = list(my_dict.keys())
list_of_value = list(my_dict.values())
print("keys: ", list_of_key)
print("values: ", list_of_value)
position = list_of_value.index(1)
print(list_of_key[position])
position = list_of_value.index(2)
print(list_of_key[position])
[out]
keys: ['John', 'Michael', 'Shawn']
values: [1, 2, 3]
John
Michael
3. 1과 거의 같은데, list comprehension으로 좀 더 짧게 줄였다.
my_dict ={"John":1, "Michael":2, "Shawn":3}
dnf = [k for k,v in my_dict.items() if v==3]
print(dnf)
dnf[0]
[out]
'Shawn'
4. key를 활용해 value를 얻기는 더 쉬운 것을 활용하여 value를 key로, key를 value로 바꿔 value로 인덱스를 한다.
my_dict ={"John":1, "Michael":2, "Shawn":3}
new_dict = {v: k for k, v in my_dict.items()}
new_dict[2]
[out]
'Michael'
'Programming > Python' 카테고리의 다른 글
배열의 index와 value를 전달해주는 enumerate() 함수 (0) | 2021.06.21 |
---|---|
배열에 아이템을 추가하는 메서드 .append(), .extend(), .insert() 비교 (0) | 2021.06.21 |
[AI class day11] 파이썬 넘파이 python numpy TIL (0) | 2021.05.04 |
filter() 리스트, 튜플 등에서 조건에 맞는 요소만 추려내는 내장함수 (0) | 2021.05.04 |
.get() 딕셔너리에서 key를 사용해 value 얻기 (0) | 2021.05.04 |