프로그래밍/Python

[Python] 데이터 유형: 사전(Dictionary)

슬기나무 2021. 6. 10. 22:32
반응형

이번 포스팅에서는 사전(Dictionary) 데이터 유형에 대해 알아봅시다.

 

 사전(Dictionary)

사전은 리스트와 마찬가지로 많은 값의 모음입니다.

 

하지만 리스트에서 인덱스를 정수밖에 사용하지 못했던 것과는 달리

 

사전 데이터에서는 인덱스를 다양한 데이터 유형을 사용할 수 있습니다.

 

그 인덱스를 key라고 하며, key와 연관된 value의 쌍을 key-value pair라고 합니다.

 

사전 데이터는 중괄호 {}로 정의합니다.

myDog = {'old': '4', 'color': 'white', 'size': 'fat'}

여기서 key는 'old', 'color', 'size'이고, value는 각각 '4', 'white', 'fat' 입니다.

 

만약 key를 통해 value를 호출하고 싶다면

myDog = {'old': '4', 'color': 'white', 'size': 'fat'}

print(myDog['old'])

마치 리스트에서 정수 인덱스를 입력하는 것 처럼 key를 입력하여

 

value를 호출할 수 있습니다.

 

 사전(Dictionary)과 리스트(List)의 차이점

사전에서도 물론 정수 키(key)를 사용할 수 있지만 리스트와 같이

 

0에서 시작할 필요는 없습니다.

A = {10: 'apple', 7: 'banana', 3: 'peach'}

이렇다보니, 사전의 값들은 순서가 없습니다.

 

리스트는 0에서부터 순서를 매기면 되지만, 사전은 그렇지 않기 때문이죠.

 

그렇다보니 데이터를 파워풀한 방법으로 구성할 수 있습니다.

 

임의의 인덱스(key)를 쓸 수 있고, 그 key가 아니면 오류가 나기 때문입니다.

 

 메소드(keys(), values(), items(), get(), setdefault())

사전의 key, value를 반환하는 세가지 메소드가 있습니다.

 

values()

values() 메소드는 사전의 value을 반환하는 메소드입니다.

myDog = {'old': '4', 'color': 'white', 'size': 'fat'}

for i in myDog.values():
    print(i)

실행 결과는 아래와 같습니다.

for 루프문을 통해 사전에서 모든 value를 반복해 print했습니다.

 

 

keys()

keys() 메소드는 사전의 key를 반환하는 메소드입니다.

myDog = {'old': '4', 'color': 'white', 'size': 'fat'}

for i in myDog.keys():
    print(i)

실행 결과는 아래와 같습니다.

위에서와는 다르게 사전의 key만이 출력되는 것을 확인할 수 있습니다.

 

items()

다음은 items() 메소드입니다.

 

이 메소드는 사전의 key와 value를 모두 반환하는 메소드입니다.

myDog = {'old': '4', 'color': 'white', 'size': 'fat'}

for i in myDog.items():
    print(i)

get()

키 값이 사전에 존재하는지 여부를 확인하기 위해서는

 

get() 메소드를 사용하는 것이 적합합니다.

 

get() 메소드는 두 개의 매개변수를 가지는데,

 

하나는 key가 존재할 경우 가져올 값, 하나는 존재하지 않을 경우 가져올 값입니다.

 

예를 들면,

myDog = {'old': '4', 'color': 'white', 'size': 'fat'}

print(myDog.get('color', 0))
print(myDog.get('eye', 0))

위 코드를 실행하면 결과는 아래와 같습니다.

첫번째는 'color'라는 key가 존재했기 때문에 그 값인 'white'를 반환한 것이며,

 

두번째는 'eye'라는 key가 존재하지 않기 때문에 두번째 매개변수인 0을 반환한 것입니다.

 

setdefault()

그럼 그 key가 존재하지 않는다는 걸 알았을 때

 

그 key에 value를 설정하고 싶은 경우도 있겠죠?

 

그럴 때 사용하는 메소드가 setdefault() 입니다.

 

이 메소드는 특정 key에 value가 존재하지 않는 경우에만 value를 설정할 수 있습니다.

myDog = {'old': '4', 'color': 'white', 'size': 'fat'}
print(myDog)
myDog.setdefault('eye', 'yellow')
print(myDog)
myDog.setdefault('eye', 'black')
print(myDog)

위 코드를 실행하면 결과는 아래와 같습니다.

처음 출력된 결과는 초기에 선언된 myDog라는 사전이며, 3쌍의 key-value pair 형태입니다.

 

그 다음 setdefault() 메소드를 사용하여

 

'eye'라는 key에 값이 없는 경우 'yellow'라는 value를 설정하도록 하여

 

'eye' key에 yellow라는 value가 사전에 입력되어 출력된 결과를 확인할 수 있으며,

 

그 다음에엔 'eye'가 없을 경우 'black'이라는 value를 설정하도록 하였으나

 

이미 'eye'라는 key에 value가 존재하기 때문에 설정되지 않고

 

그대로 'yellow'로 남아있는 모습입니다.

 

 

여기까지 사전(Dictionary)이라는 데이터 유형에 대해 알아보았습니다.

반응형