본문 바로가기

python 기초강의

파이썬 독학 기본 문법 딕셔너리 자료형 #4

파이썬 독학 기본 문법 딕셔너리 자료형 #4

파이썬 기본 문법 정리

 

이번 시간은 파이썬의 딕셔너리에 관한 포스트입니다.

 

딕셔너리는 리스트와 더불어 가장 많이 쓰이는 파이썬의 자료형입니다.

 

딕셔너리 자료형이 다른 자료형들과 다른 가장 큰 차이점은 key와 값으로 된 대응 관계 자료를 저장할 수 있다는 점입니다. 이를 배열 또는 해시라고도 합니다.

 

말 그대로 사전이라는 의미를 가진 이 딕셔너리 자료 형음 key값을 통해서 대응되는 값을 호출하여 저장할 수 있습니다.

자, 그럼 이 딕셔너리 자료형에 관해서 함께 공부를 해보겠습니다.

 

 

딕셔너리 자료형 모습

파이썬의 딕셔너리 자료형은 아래와 같이 생겼습니다.

{Key1:Value1, Key2:Value2, Key3:Value3, ...}

보시는 것처럼 key와 value가 한쌍을 이루어 저장되어 있습니다.

 

이와 같이 연관된 내용을 어떤 key값과 함께 저장하여 사용할 수 있는 형태로 이루어져 있습니다.

 

딕셔너리 자료형 생성 및 출력

딕셔너리를 선언(생성) 하는 방법은 아래와 같습니다.

class_num = {1:"뽀로로", 2:"에디", 3:"크롱"}

1, 2, 3이라는 key값을 저장하고 이에 대응하여 뽀로로, 에디, 크롱이라는 값을 넣었습니다.

1

뽀로로

2

에디

3

크롱

위의 표와 같이 말이죠.

 

 

 

자, 그럼 key 값을 이용하여 value를 출력하는 방법을 알아보겠습니다.

여기에는 크게 두 가지 방법이 있습니다.

class_num = {1:"뽀로로", 2:"에디", 3:"크롱"}
print(class_num[2])
print(class_num[3])

print(class_num.get(1))
print(class_num.get(3))

print(class_num [key]) 와 print(class_num.get(key)) 이런 식으로 key를 이용하여 value를 호출할 수 있습니다.

위 코드의 결과를 볼까요?

딕셔너리 자료형 생성 및 출력1

코드와 비교해 보시면 key에 대응되는 value가 4번 출력이 된 것을 확인할 수 있습니다.

 

그럼 key를 이용하여 value를 출력하는 두 가지 방법의 차이점은 무엇일까요?

바로, 프로그램이 종료되느냐, 종료되지 않느냐에 있습니다.

print(class_num [key]) 이러한 형태로 출력을 할 때 해당 딕셔너리에 호출하는 key값이 없는 경우 프로그램은 종료되어 버립니다. 하지만, print(class_num.get(key)) 이런 식으로 호출을 하면 해당 딕셔너리에 호출하는 key값이 없더라도 none이라는 문구를 출력하고, 프로그램은 종료되지 않습니다.

class_num = {1:"뽀로로", 2:"에디", 3:"크롱"}
print(class_num[8]) #프로그램 종료
print("python")

위와 같은 코드를 작성하여 실행을 해보겠습니다. 코드를 보시면 아시겠지만 class_num이라는 딕셔너리에 8이라는 key는 없습니다.

딕셔너리 자료형 생성 및 출력2

자, 보시는 바와 같이 print(class_num [8]) 라인에서 프로그램이 종료되면서 print("python") 명령이 실행되지 않았습니다. 그럼 print(class_num.get(key)) 방식으로 코드를 작성해서 실행해보겠습니다.

class_num = {1:"뽀로로", 2:"에디", 3:"크롱"}
print(class_num.get(8)) #프로그램 종료되지 않고 none을 출력
print("python")

이렇게 코드를 변경하니, 아래와 같은 결과가 출력됩니다.

딕셔너리 자료형 생성 및 출력2

print(class_num.get(8)) 라인에서 호출하는 key가 없으니 "None" 이 출력이 되고, 프로그램은 계속 진행됩니다. 그리고 "python"이라는 문자열도 출력이 된 것을 확인할 수 있습니다.

 

"None" 대신 원하는 문자열이 출력되게도 할 수 있습니다. 코드를 아래와 같이 작성해보겠습니다.

class_num = {1:"뽀로로", 2:"에디", 3:"크롱"}
print(class_num.get(8, "로디")) #딕셔너리에 없는 key를 호출시 기본값을 주어 none 대신 출력이 가능하게 할 수 있음
print(class_num.get(3, "로디")) #딕셔너리에 있는 key를 호출시에는 기본값은 출력 되지 않고, key에 대응되는 value가 출력 됨.
print("python")

8번 key는 없습니다, 없으면 "로디"라는 문자열을 출력하라는 의미가 됩니다. 이미 딕셔너리에 해당 key가 있다면 대응되는 value가 출력됩니다. 아래 결과처럼 말이죠.

딕셔너리 자료형 생성 및 출력3

 

딕셔너리 자료형 key 존재 확인

딕셔너리에 어떤 key가 존재하는지 확인하여 True와 False로 결과를 출력하게 할 수 있습니다.

class_num = {1:"뽀로로", 2:"에디", 3:"크롱"}
print(2 in class_num) #딕셔너리에 있는 키를 넣으면 true가 출력
print(7 in class_num) #딕셔너리에 없는 키를 넣으면 false가 출력

class_num에는 2번 key는 있고, 7번 key는 없습니다. 따라서 아래와 같은 결과가 출력되는 것을 확인할 수 있습니다.

딕셔너리 자료형 key 존재 확인1

True와 False가 출력된 것을 확인할 수 있죠.

 

딕셔너리 자료형 key를 문자열로 지정

딕셔너리의 key를 숫자가 아닌 문자 또는 문자열로도 지정할 수 있습니다.

 

 

 

# 딕셔너리 key값은 문자열로도 가능
class_num = {"A":"뽀로로", "B":"에디", "C":"크롱"}
print(class_num.get("A"))
print(class_num.get("B"))
print(class_num)

class_num2 = {"AA001":"타요", "BB001":"로기", "CC001":"가니"}
print(class_num2.get("AA001"))
print(class_num2.get("BB001"))
print(class_num2)

딕셔너리의 key를 문자 또는 문자열로 코드를 작성하여 실행했습니다. 결과는 아래와 같습니다.

딕셔너리 자료형 key 를 문자열로 지정1

코드와 결과를 비교해보시면 잘 출력된 것을 확인할 수 있습니다.

 

딕셔너리 자료형 삭제 방법

딕셔너리에서 값을 삭제하는 방법입니다. 지정한 하나의 값을 삭제할 수도 있고, 모두를 삭제 할 수도 있습니다.

우선, 하나의 값만 지정하여 삭제하는 방법입니다.

# 딕셔너리 값 삭제
class_num = {"A":"뽀로로", "B":"에디", "C":"크롱"}
print(class_num)
del class_num["C"]
print(class_num)

위 코드를 보면 A, B, C라는 key와 값을 넣고, C를 삭제하는 코드입니다.

특정 key와 value를 삭제할 때는 key값을 이용하여 del 명령을 사용하면 됩니다.

결과는 아래와 같습니다.

딕셔너리 자료형 삭제 방법1

삭제 전 후로 print로 딕셔너리를 출력하였더니 C 가 삭제된 것을 확인할 수 있습니다.

 

다음은 전체를 삭제하는 방법입니다.

코드는 아래와 같습니다.

딕셔너리 자료형 삭제 방법2

마찬가지로 딕셔너리 생성 전후로 print를 이용하여 출력하였습니다. 결과를 보시면 두 번째 줄에 아무것도 없는 딕셔너리가 출력된 것을 확인할 수 있습니다.

 

딕셔너리 자료형 key 또는 value만 출력 하기

다음은 딕셔너리 자료형에 저장되어 있는 key 또는 value만 출력하는 방법입니다.

keys, values 명령을 사용하면 됩니다.

keys, values 모든 값을 출력하는 명령도 있습니다. item이라는 명령어입니다.

코드는 아래와 같습니다.

 

 

 

# 딕셔너리에서 key 또는 값만 출력 하는 방법
class_num = {"A":"뽀로로", "B":"에디", "C":"크롱"}
print(class_num)
print(class_num.keys()) # key만 출력하기
print(class_num.values()) # 값만 출력하기
print(class_num.items()) # 모두 출력하기

위와 같은 코드를 실행하면 아래와 같이 결과가 출력됩니다.

딕셔너리 자료형 key 또는 value만 출력 하기1

코드와 결과 스크린숏을 잘 비교하여 보시기 바랍니다.

그냥 print(class_num)과 key와 value를 모두 출력하는 print(class_num.items()) 명령의 결과가 약간의 차가 있는 것을 확인할 수 있습니다.

 

딕셔너리 자료형에 list 저장 하기

딕셔너리 자료형에는 list 형태의 자료도 저장할 수 있습니다. 아래 코드와 같이 선언하여 주면 됩니다.

class_num = {"A":["뽀로로","팽귄"], "B":["에디","사막여우"], "C":["크롱","공룡"]}
print(class_num)

각각의 key A, B, C에 list 형태의 자료를 저장하였습니다.

그 결과는 아래와 같습니다.

딕셔너리 자료형에 list 저장 하기1

이를 잘 응용한다면, 앞선 시간에 함께 공부했던 list와 딕셔너리를 할게 사용할 수 있습니다.

 

딕셔너리 자료형 key가 중복되면 앞쪽에서 선언된 내용은 무시됨

한 딕셔너리에 중복된 key가 들어가면 늦게 선언된 내용만 저장되어 출력이 됩니다.

# 딕셔너리에서 key가 중복되면 앞쪽에서 선언된 내용은 무시
class_num = {"A":"뽀로로", "A":"에디", "C":"크롱"}
print(class_num)

class_num이라는 딕셔너리에 A key값이 두 개가 선언되었습니다. 이럴 때는 먼저 선언된 뽀로로는 무시되고 이후 선언된 에디만 출력이 됩니다.

딕셔너리 자료형 key가 중복되면 앞쪽에서 선언된 내용은 무시 됨1

key가 A인 것은 에디만 출력이 된 것을 확인할 수 있습니다.

 

오늘은 여기까지 공부를 함께 해보았습니다.

 

딕셔너리도 어렵지 않네요!!

함께 열심히 파이썬 정복을 향해서 달려 봅시다!!!

 

 

 

다 함께 힘을 냅시다!!!

그래야 파이썬도 정복하고, 코로나도 정복할 수 있습니다!!

 

이전 시간에 함께 공부했던 파이썬 기본 문법 정리 내용은 아래와 같습니다.

처음 보신 분들은 하나씩 링크를 열어서 함께 공부를 해보면 좋겠습니다.

 

감사합니다!!!

 


# 파이썬 독학 기본 문법 요약정리 목록

2020/08/25 - [DB엔지니어가 공부하는 python] - 파이썬 코딩 기본 문법 요약 정리 #1

 

파이썬 코딩 기본 문법 요약 정리 #1

파이썬 코딩 기본 문법 요약 정리 #1 그동안, 파이썬을 이용해서 웹 크롤러도 만들어보고, restAPI도 만들어보고, 데이터 분석도 해봤지만, 사실 기본기가 없는 상황에서 실력이 더 느는 것 같지가

stricky.tistory.com

2020/08/25 - [DB엔지니어가 공부하는 python] - 파이썬 코딩 기본 문법 요약 정리 문자열 #2

 

파이썬 코딩 기본 문법 요약 정리 문자열 #2

파이썬 코딩 기본 문법 요약 정리 문자열 #2 안녕하세요. 오늘은 지난 시간에 이어서 파이썬 기본 문법 문자열에 대해서 공부를 같이 해보도록 하겠습니다. 지난 시간에는 숫자, 숫자 계산 및 불

stricky.tistory.com

2020/08/26 - [DB엔지니어가 공부하는 python] - 파이썬 독학 기본 문법 리스트 #3

 

파이썬 독학 기본 문법 리스트 #3

파이썬 독학 기본 문법 리스트 #3 이번이 벌써 파이썬 독학을 위한 기본 문법 세 번째 시간입니다. 다시 한번 말씀드리지만, 파이썬 기본 문법 포스팅은 제가 잘해서 하는 게 아닙니다. 저도 이 ��

stricky.tistory.com


 

 

 

by.sTricky