딕셔너리 내부에 key가 있는지
확인하는 방법
먼저
딕셔너리 내부에 있는 key 값을
꺼내올 때 사용하는 기본 방법은
print( 딕셔너리명 ["키명"]),
이때 꺼내고자 하는 키가 있는 경우
해당 키의 값을 반환해 주는데
꺼내고자 하는 키가 없는 경우
Error 메시지가 뜨는 것을 확인할 수 있다.
1. If 조건문에 적용하기
dictionary = {
"이름" : "타쿠대디"
"종족" : "천재 신인류"
}
if "나이" in dictionary:
print ( dictionary [ "나이" ] )
else:
print ("key 정보가 없습니다")
2. get ( ) 함수 활용
겟 함수를 사용하면
앞서 사용했던 방법과
동일한 결괏값을 돌려받지만
차이로는
원하는 키가 없는 경우
장문의 Error 가 뜨는 대신
'None'이라는 메시지가 반환되며,
별도로 디폴트 값을 미리 정해두어
None 대신 돌려받을 수 있다.
예제를 보자
먼저 기본 사용법을 비교해보자.
print ( a ["너구리"])
print ( a.get ( "너구리"))
출력 결과는 같기 때문에 둘 중
선호하는 것을 쓰면 된다.
예제의 3,4번째는 꺼내려는 키가
없는 경우인데, 3번째의 경우
None 이라는 메시지가 반환되었고
4번째의 경우, 혹 키가 없을 경우를
대비해 디폴트로 넣어둔 "정보 없음"
이 None 대신 출력하는 것을 볼 수 있다.
디폴트 사용법은
.get ( a ( "키 이름", "디폴트 값" ))
3. in 연산자를 활용한 if 문
예제 1)
예제 2)
딕셔너리 내부에 해당 키가 있는지
확인하는 위 코드는 실제로도 많이
활용되기 때문에 꼭 기억하자!
* 중요!
많이 사용하는 딕셔너리 형태 예제
1. 리스트안에 여러 정보들이
딕셔너리 배열의 형태로 담겨있다.
반복문을 이용해 정보를
가지고 오자.
대괄호와 중괄호 구분에 주의하자
2. 무작위로 반복되는 숫자가
몇 번씩 반복되고 있는지 세주는 프로그램
*정말 많이 사용되는 고정적인
카운터 코드이기 때문에
꼭 알고 있어야 한다.
이해될 때까지 보고 또 외워두자!
코드)
numbers = [1,5,6,7,8,9,6,1,2,4,3,5,8,1,1,7,1,3]
counter = { }
for number in numbers:
if number in counter:
counter[number] +=1
else:
counter[number] = 1
print(counter)
해석)
먼저
numbers라는 '리스트'가 있고
값이 무작위로 들어가 있다.
리스트는 대괄호를 쓴다.
다음
counter라는 '딕셔너리'가 있으며
현재 키와 값은 비어있다.
딕셔너리는 중괄호를 쓰며 내부 형태는
{ 키 : 값 }의 형태로 이루어져 있다.
numbers라는 리스트의 값 '하나'를
number라는 변수에 담았다.
우리는 반복문을 사용하기 때문에
numbers라는 리스트에 있는
모든 값을 처음부터 끝까지
'하나씩 반복'하여 number라는
변수에 넣어주게 된다.
이제 두 가지 조건을 걸어주는데
만약 number라는 변수에 담은
numbers의 숫자가 counter
안에도 있다면 1로 표시를 해주고
else:
counter[number] = 1
이것이 반복되어 발견된다면
반복되는 수만큼 1을 더해 준다.
counter[number] += 1
이와 같은 조건문은 else를
먼저 확인하고 짜야 이해가 더 쉽다.
3. 중요!!
flatten
딕셔너리 내부에 딕셔너리가,
그 안에 또한 리스트가 중첩되어
사용되는 경우가 많은데
그 모든 값들을 일렬로 가지고 오는 것을
flatten이라고 한다.
(flatten 함수에 대해선
다음에 다루도록 한다.)
복잡하고 헷갈릴 수 있으니
완벽히 이해될 때까지 연습해야 하며
마찬가지로 자주 사용되는 중요한 내용이니
꼭 알아두고 익히자.
- 사용해야 하는 것들 -
type 함수 / in 연산자 / 반복문 중복 사용
일단 각 값들에 접근하는
연습부터 해야 하는데
그것을 하려면 우선
각 값 들의 '데이터 타입'이
어떻게 구성되어 있는지
확실히 체크를 해두어야 한다.
먼저 딕셔너리의
전체 구성을 살펴보자
주목할 것은 '키'가 아니라
'값'들의 '데이터 타입'.
items 키의 값이 '딕셔너리 타입'이고
skill의 값은 '리스트 타입'인 것을
체크하자!
1. 우선 items 키의 값을 들고 와보자!
먼저 전체 딕셔너리의 내용을
key라는 변수에 담았다.
다음으로
전체 딕셔너리의 값들 중
데이터 타입(type)이 딕셔너리(dict)인 것을
골라 선택해 주어야 하는데
전체 딕셔너리의 값들만을 가지고 오는 키워드
character[key]를 사용해, 이를 type 함수로 묶어주고
그중에 데이터 타입이 dict인 것만 사용하겠다고
조건을 걸어준다.
그렇게 고른,
전체 값들 중 '데이터 타입'이
'딕셔너리'인 items의 값을
k라는 변수에 담아
이를 활용하여 출력,
(k, character [key][k])
k는 items라는 값 내부의
딕셔너리에 있는 '키'를 가리키고,
character[key][k]는 해당 키의
값을 나타낸다.
2. 동일한 방법으로 이번엔
값으로 list 데이터 타입을
가지고 있는 skill을 불러와 보자!
먼저 type 함수를 사용해
데이터 타입이 '리스트'인 값을
지목,
리스트의 요소를 skills라는
변수에 담았고
이를 활용하여 출력!
(key, skills)
key는 전체 딕셔너리 내 '키' 중
값이 list인 녀석만 고르게 되어있고
skills는 그 해당 키의 값을 가리키며
요소가 3개 있기 때문에 3회 반복하여
이를 출력해 준다.
3. 마지막으로 남은 키와 값을
출력해 주자.
chartacter라는 딕셔너리에 있는
총 4개의 키 중 2개는 이미 처리를
해 주었으니 남은 두 가지는
그냥 처리해 주면 된다.
복잡하지만 하나하나 따져보면
할 수 있다.
'프로그래밍 > Python' 카테고리의 다른 글
기초) while 반복문 (0) | 2020.05.25 |
---|---|
기초) range 와 반복문 (0) | 2020.05.25 |
기초) 딕셔너리 정리 (0) | 2020.05.23 |
기초) list와 for 반복문 / 문제 해결 발상의 중요성 (0) | 2020.05.22 |
기초) list 관련 함수 / 파괴적.비파괴적 함수의 개념 (0) | 2020.05.21 |