dict_name[key]
입력 : key
출력: value
파이썬의 딕셔너리는 key, value 쌍으로 이루어진 해시형 자료구조이다.
john = {'phone': '01840125784' , 'birthday': '19930512' , 'e-mail': 'johndoe@gmail.com' }
특정 key 값에 있는 value를 호출하고 있으면,
dict_name[key] 를 사용하는데, dict_name.get(key)를 써도 똑같은 값을 return 한다.
print(john['phone'])
print(john.get('phone'))
>>
'01840125784'
'01840125784'
둘의 차이점은 딕셔너리에 없는 key 값으로 호출할 때 있다.
dict_name[key] 는 KeyError가 발생하지만, dict_name.get(key)는 None을 리턴한다.
print(john['address'])
--------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-16-caf6080d7d31> in <module> ----> 1 print(john['address']) KeyError: 'address'
print(john.get('address'))
None
그리고 get() 괄호 안에, key 가 없을 때, None 대신 출력할 값을 default로 넣어둘 수도 있다.
print(john.get('address', 0))
0
물론 이렇게 했다고, 딕셔너리 내에 새로운 key와 value가 생성되는 것은 아니다.
john
{'phone': '01840125784', 'birthday': '19930512', 'e-mail': 'johndoe@gmail.com'}
.get()의 이러한 특성을 활용할 수 있는데,
d = {3:1}
l = [1,2,3,4,5,6]
for i in l:
d[i] = 1
d
{3: 1, 1: 1, 2: 1, 4: 1, 5: 1, 6: 1}
이렇게 그냥 1을 할당하는 것과 달리,
d = {3:1}
l = [1,2,3,4,5,6]
for i in l:
d[i] = d.get(i, 0) + 1
d
{3: 2, 1: 1, 2: 1, 4: 1, 5: 1, 6: 1}
get() 과 for 반복문을 활용해 리스트에 key 값이 나오면 딕셔너리의 value를 하나씩 올려주는 코드를 짤 수 있다. (명단이나 재고 관련 문제에서 활용 가능)
추가로 value값을 가지고 key값을 출력하고 싶을 땐 어떻게 해야할까? 여러가지 방법이 있지만, dict_name.items를 이용해 key, value 값을 얻어서 찾는 것이 비교적 간단한 것 같다.
my_dict ={"John":1, "Michael":2, "Shawn":3}
find_name = [k for k,v in my_dict.items() if v==3]
find_name[0]
'Shawn'
그렇다고는 해도 key값을 이용해 value값을 얻는 것 보다 용이하지 않기 때문에 index를 무엇으로 할 건지 잘 정해서 dictionary에 집어넣는 것이 중요한 것 같다.
'Programming > Python' 카테고리의 다른 글
[AI class day11] 파이썬 넘파이 python numpy TIL (0) | 2021.05.04 |
---|---|
filter() 리스트, 튜플 등에서 조건에 맞는 요소만 추려내는 내장함수 (0) | 2021.05.04 |
map() - 리스트, 튜플 등에서의 각 요소를 지정된 함수로 처리해주는 내장함수 (0) | 2021.04.26 |
set() - from list to set 리스트를 해시형 데이터 타입인 셋으로 변환하기 (0) | 2021.04.26 |
[AI class day 5] 프로그래머스 코딩 테스트 문제 풀기 TIL (0) | 2021.04.24 |