사전(Dictionary)

타키탸키·2021년 1월 20일
0

Python 입문하기

목록 보기
9/14

지난 시간에는 리스트를 활용해서 값을 정리해봤습니다. Python에는 리스트 외에도 여러 값을 저장할 수 있는 또 다른 자료형이 존재합니다. 바로 사전(dictionary)인데요. 이번 시간에는 이 사전에 대해 함께 배워봅시다.

📗 사전

사전을 보면 단어와 뜻이 쌍을 이루고 있습니다. Python의 사전도 마찬가지입니다. Python의 사전에서는 키(Key)와 값(Value)이 한 쌍을 이룹니다. 사전을 만드는 코드를 함께 봅시다.

some_dictionary = {
    2: 4,
    3: 9,
    4: 16
}

이렇게 중괄호 안에 원하는 쌍을 작성하면 됩니다. 쌍은 콜론(:)과 띄어쓰기로 표현됩니다. 쉼표로 여러 쌍을 만들 수 있습니다. 이렇게 만든 사전의 자료형을 한 번 확인해 보겠습니다.

print(type(some_dictionary))

그러면 'dict'라는 자료형이 나오는데 이는 dictionary의 약어로 사전 자료형을 의미합니다.

이제 사전에 저장된 값을 받아와 봅시다. 리스트에서 인덱싱을 했던 것처럼 대괄호 안에 키를 넣으면 값을 불러올 수 있습니다.

print(some_dictionary[4])
16

some_dictionary 사전의 키 4와 쌍을 이루는 값이 16이기 때문에 16이 출력된 것입니다.

이번에는 사전에 새로운 쌍을 추가해봅시다. 리스트와는 달리 함수를 쓰지 않고 추가가 가능합니다.

some_dictionary[5] = 25

대괄호 속에 원하는 키를 넣고 키와 쌍을 이룰 값을 넣어주면 새로운 한 쌍이 사전에 추가됩니다.

사전은 리스트와 많이 유사하지만 차이점도 분명히 존재합니다. 먼저, 리스트에 요소를 추가할 때는 순차적으로 진행되는 반면에 사전에는 순서라는 개념이 없습니다.

또, 리스트의 인덱스는 정수인 반면에 사전의 키는 반드시 정수형일 필요는 없습니다. 아래 예시를 함께 볼까요?

shin_family = {
    '아빠': '신형만',
    '엄마': '봉미선',
    '아들': '신짱구',
    '딸': '신짱아',
    '강아지': '흰둥이'
}

이처럼 문자열도 사전의 키가 될 수 있습니다. 값을 불러올 때도 정수형과 똑같은 방법으로 불러올 수 있습니다.

print(shin_family['강아지'])
흰둥이

참고로 한 사전에서 Value의 값은 중복될 수 있지만 Key는 고유한 특성을 지니기 때문에 중복이 불가능합니다. 이러한 특성 때문에 Key가 식별자로서 역할을 할 수 있는 것입니다.

📗 사전 활용법

이번에는 사전 자료형을 효과적으로 활용할 수 있는 방법들을 배워봅시다.

❗ 첫번째로 알아볼 개념은 사전에 있는 값 불러오기입니다. 앞서 배웠던 것과 다르게 이번에는 사전의 모든 값을 가져올 수 있습니다.

shin_family = {
    '아빠': '신형만',
    '엄마': '봉미선',
    '아들': '신짱구',
    '딸': '신짱아',
    '강아지': '흰둥이'
}

print(shin_family.values())
dict_values(['신형만', '봉미선', '신짱구', '신짱아', '흰둥이'])

이처럼 values 메소드를 사용하면 사전에 있는 모든 값을 불러옵니다. 이때, 출력값에는 사전의 이름이 아닌 dict_values라는 이름으로 출력됩니다.

❗ 이를 좀 더 응용하여 사전에 특정 값이 있는지 확인하는 방법을 알아보겠습니다.

print('신짱구' in shin_family.values())
True

리스트에 특정값이 있는지 확인 할 때, in이라는 개념을 사용했던 것을 기억하시나요? 마찬가지로 특정 값을 입력하고 in을 사용하면 해당 값이 목록에 있는지 확인할 수 있습니다. 결과값은 불린값으로 출력됩니다.

❗ 만약 목록을 반복적으로 돌리며 값을 불러오고 싶다반복문을 사용하면 됩니다.

for value in shin_family.values():
    print(value)
신형만
봉미선
신짱구
신짱아
흰둥이

❗ 그렇다면 이번에는 값이 아닌 키를 한 번 불러와 볼까요?

print(shin_family.keys())
dict_keys(['아빠', '엄마', '아들', '딸', '강아지'])

이렇게 keys 메소드를 통해 키를 불러오면 됩니다. 이번에도 사전의 이름이 아닌 dict_keys라는 이름으로 불러와졌네요.

for key in shin_family.keys():
    print(key)

마찬가지로 이렇게 반복문을 돌릴 수 있습니다.

❗ 조금 더 응용해봅시다. 아래 코드를 한 번 볼까요?

for key in shin_family.keys():
    value = shin_family[key]
    print(key, value)

먼저, shin_family[key]를 통해 사전에 있는 값을 받아옵니다. 다음으로 그 값을 변수 value에 저장합니다. 그 다음 키와 값을 모두 출력해봅시다.

아빠 신형만
엄마 봉미선
아들 신짱구
딸 신짱아
강아지 흰둥이

그럼 이렇게 사전의 모든 쌍이 출력됩니다. 지금은 키를 먼저 받아오고 그 키를 통해서 값을 받아왔습니다. 두 단계에 걸쳐 키와 값을 받아온 것이죠. 이번에는 이 과정을 한 단계로 줄여보겠습니다.

for key, value in shin_family.items():
    print(key, value)

keys 대신 items 메소드를 사용했고 value를 for문에 추가했습니다. 이렇게 하면 키를 받아온 후 값을 받아오는 과정을 생략할 수 있습니다. 위 코드를 실행하면 앞서 작성한 코드와 같은 값을 출력합니다.


이번 시간에는 리스트와 유사한 자료형 사전에 대해 알아봤습니다. 문자열을 활용할 수 있는만큼 리스트보다 더 많은 활용이 기대되는데요. 사전 개념을 잘 익혀 Python을 통해 데이터를 처리하는 방법에 익숙해져 봅시다.

* 이 자료는 CODEIT의 '프로그래밍 기초 in Python'을 기반으로 작성되었습니다.
profile
There's Only One Thing To Do: Learn All We Can

0개의 댓글