본문 바로가기
Python/Python 초급

Python 파이썬 Dictonary, dict(), 딕셔너리 데이터 타입

by 베타코드 2021. 11. 22.
반응형

안녕하세요 독학코딩입니다. 오늘은 파이썬 딕셔너리 데이터 타입에 대해 배워보겠습니다. 딕셔너리는 dictionary로 말 그대로 사전과 같이 단어(key)와 뜻(value)으로 이루어진 형태입니다. 특정 key 값을 알고 있다면 해당 key 값에 대응하는 value를 호출할 수 있는 데이터 타입니다. 

 

Nonetype = 타입이 없는 자료입니다.
bool = 참, 거짓을 의미합니다. ex) true, false
int = 숫자형을 의미합니다. ex) 1, 2, 3
float = 소수점이 있는 숫자를 의미합니다. ex) 2.334, 5.125
str = 텍스트를 의미합니다. ex) "안녕", "사과"
list = 리스트라고 합니다. []로 표현됩니다. 
	ex) ["안녕", "사과"], [1, 2, 3, 4], [2.33, 4.21, 5.32]
tuple = 튜플이라고 합니다. ()로 표현됩니다. 한번 구성하면 구성원을 변경할 수 없습니다. 
	ex) ("안녕", "사과"), (1, 2, 3, 4), (2.33, 4.21, 5.32)
dict = 딕트, 딕셔너리라고 합니다. {}로 표현됩니다. key와 value로 구성 되어있어 원하는 자료를 찾기 편합니다. 
	ex) {"이름"="홍길동", "나이"="43", "도시"="서울"} 
    	여기서 이름, 나이, 도시를 key, 홍길동, 43, 서울은 value 입니다.

 

 


Python 튜플 연산자 종류

dict_a = {"이름": "홍길동", "나이": 24, "도시":"서울"}
len(dict_a) 3
dict_a["이름"] = "김아무개"
dict_a["취미"] = "코딩"
{'이름': '김아무개', '나이': 24, '도시': '서울'}
{'이름': '김아무개', '나이': 24, '도시': '서울', '취미': '코딩'}
del dict_a["취미"] {'이름': '김아무개', '나이': 24, '도시': '서울'}
dict_a.keys() dict_keys(['이름', '나이', '도시'])
dict_a.values() dict_values(['김아무개', 24, '서울'])
dict_a.items() dict_items([('이름', '김아무개'), ('나이', 24), ('도시', '서울')])
"이름" in dict_a
"전화번호" in dict_a
True
False
dict_a.get("이름")
dict_a.get("전화번호")
김아무개
None
dict_a.clear() {}

 

 

Python 딕셔너리 표현방식 {key: value}

딕셔너리는 한글로 사전입니다. 그래서 단어(key)와 그 뜻(value)으로 이루어져 있습니다. 항상 한쌍으로 이루어져야 하며 key만 있거나 value만 있으면 딕셔너리 구성이 안됩니다. key에는 str, int, tuple 모두 올 수 있으며 value에는 str, int, list, tuple, dict 전부 올 수 있습니다.

 

key와 value에 오는 데이터 타입 차이는 list와 dict만 있습니다. list는 key로 오지 못하는 이유는 무엇일까요? list가 mutable이기 때문입니다. list는 가변 하는 값이기 때문에 딕셔너리의 key로 올 수가 없는 겁니다. 열쇠가 맨날 바뀐다면 안 되겠죠? 그럼 dict는 뭐일까요? 네 맞습니다. dict도 mutable입니다. 밑의 예제로 한 번에 표현해드리겠습니다.

dict_a = {"이름":"홍길동", "나이":24, "도시":["서울", "인천", "경기도"],
          "취미":("코딩", "파이썬"), "전화번호":{"집":"02-123-1234", "휴대폰":"010-0000-0000"},
          404:"인트도 키로 가능", (1, 2):"튜플도 키로 가능"}
print(dict_a)

dict_b = {"키만":}
print(dict_b)
dict_b = {:"벨류만"}
print(dict_b)
dict_b = {{"집":"02-123-1234", "휴대폰":"010-0000-0000"}:"키를 딕셔너리로"}
print(dict_b)
dict_b = {["서울", "인천", "경기도"]:"키를 리스트로"}
print(dict_b)

 

 

Python 딕셔너리 연산자 len(dict)

딕셔너리의 길이를 구하는 방식은, 이제 우리에게 익숙한, len()으로 가능합니다. 다만, key와 value가 한쌍으로 존재하기 때문에 길이는 몇 쌍이 있는 것인지 key 개수와 valu개수의 총합을 의미하는 건 아닙니다.

dict_a = {"이름":"홍길동", "나이":24, "도시":"서울"}
print(len(dict_a))

 

 

Python 딕셔너리 연산자 dict[str] = value

딕트를 수정하거나 추가하는 방법은 아주 간단합니다. mutable이기 때문에 수정, 추가가 간단합니다.

dict_a = {"이름":"홍길동", "나이":24, "도시":"서울"}

dict_a["이름"] = "김아무개"
print(dict_a)

dict_a["취미"] = "코딩"
print(dict_a)

 

 

Python 딕셔너리 연산자 del dict[key]

딕셔너리에서 원소를 삭제하는 방법은 무엇일까요? list처럼 간단하겠죠?

dict_a = {"이름":"홍길동", "나이":24, "도시":"서울"}

del dict_a["도시"]
print(dict_a)

 

 

Python 딕셔너리 연산자 dict.keys()

딕셔너리의 모든 key값을 구하고 싶을 땐 어떻게 해야 될까요? 알아두셔야 할 점은 .keys()로 호출하면 딕셔너리의 key값들이 list 형태처럼 보이는 모습으로 반환됩니다. 하지만 실제로 list는 아닙니다.

dict_a = {"이름":"홍길동", "나이":24, "도시":"서울"}
print(dict_a.keys())
print(type(dict_a.keys()))
list_a = list(dict_a.keys())
print(list_a)
print(type(list_a))

 

 

Python 딕셔너리 연산자 dict.values()

딕셔너리의 value값만 알고 싶다면요? 딕셔너리의 value값들도 list처럼 보이는 모습입니다. keys()와 같이 list()으로 선언하여 사용할 수 있습니다.

dict_a = {"이름":"홍길동", "나이":24, "도시":"서울"}
print(dict_a.values())
print(type(dict_a.values()))
list_a = list(dict_a.values())
print(list_a)
print(type(list_a))

 

 

Python 딕셔너리 연산자 dict.items()

딕셔너리의 key값와 value값을 전부 호출하고 싶다면요? .items()로 호출하면 key와 value가 tuple로 된 list 형태로 반환됩니다. 실제로 list가 아닌 건 이제 이미 아시겠죠? 

dict_a = {"이름":"홍길동", "나이":24, "도시":"서울"}
print(dict_a.items())
print(type(dict_a.items()))
list_a = list(dict_a.items())
print(list_a)
print(type(list_a))

 

 

Python 딕셔너리 연산자 dict.get("key")

key값이 있는지 없는지 확인하는 방법은 배웠습니다. 그럼 특정 key의 특정 value를 알고 싶다면 어떻게 할까요?

dict_a = {"이름":"홍길동", "나이":24, "도시":"서울"}
print(dict_a["이름"])
print(dict_a["취미"])

이렇게 하셔도 괜찮긴 합니다. 그런데 실행해보시면 아시겠지만, print(dict_a["취미"])에서 에러가 난다는 걸 보셨을 겁니다. 에러는 코딩에 중요한 부분이죠? 그래서 에러가 나오는 대신에 key가 있으면 value를 반환하고 없으면 none을 반환하게 해주는 것이 .get("key")입니다.

dict_a = {"이름":"홍길동", "나이":24, "도시":"서울"}
print(dict_a.get("이름"))
print(dict_a.get("취미"))

 

 

Python 딕셔너리 연산자 dict.clear()

딕셔너리를 완전하게 비우고 싶다면 이렇게 하시면 됩니다.

dict_a = {"이름":"홍길동", "나이":24, "도시":"서울"}
dict_a.clear()
print(dict_a)

 

 

오늘은 파이썬 딕셔너리 데이터 타입의 연산자들에 대해서 배워보았습니다. 개인적으로는 파이썬 코딩에서 가장 많이 사용하는 데이터 타입인 거 같습니다. 익숙해지시면 list보다 더 빠르고 정확하게 이용할 수 있으니 꼭 익숙해지시기 바랍니다.

 

이로써 파이선의 기초에 대해서는 모두 끝이 났습니다. 다음 시간부터는 조금은 어려울 수 있지만 무조건 사용하게 되는 if문, while문, try-except문, for문에 대해서 배워보겠습니다. 

반응형

댓글