본문 바로가기

Python

파이썬 딕셔너리(Python Dictionary)

컬렉션 = Object List = 복수의 의미

한 가지 이상의 값을 넣고 한꺼번에 가지고 다닐 수 있다!

여러 값을 하나의 변수에 담을 수 있다!

덩어리로 취급을 한다!

 

대부분의 변수는 한 값만을 가지게 된다

아래 예를 들어 보자면

x = 2
x = 4
print(x)
4

2와 4라는 변수를 순서대로 넣어주었는데

4라는 변수만 출력이 된다

 

대부분의 변수는 위와 같이 한 값을 가지게 되고 

변수 호출 시 지정된 마지막 한 값을 출력하게 된다

 

 

 

▷ 컬렉션 : 겉으로 보기엔 하나의 값으로 보일 수 있지만, 안을 보면 각각의 이름을 가지고 여러 값이 들어가 있다

 

▷ 딕셔너리 : 한마디로 사전, 파이썬의 데이터 컬렉션

                 파이썬에서 빠르게 데이터베이스 같은 연산을 가능하게 한다

 

 

◈ 리스트 vs 딕셔너리

 

+ 리스트 : 리스트는 안의 원소의 위치를 기반으로 인덱스가 매겨진다

+ 딕셔너리 : 리스트와 다르게 순서가 없으며, 각각의 데이터에 이름표가 붙여진다

 

purse = dict()				# 빈 dict 값 초기화
purse['money'] = 12			# 'money'라는 이름표에 12 라는 값 삽입
purse['candy'] = 3			# 'candy'라는 이름표에 3 이라는 값 삽입
purse['tissues'] = 75			# 'tissues'라는 이름표에 75 라는 값 삽입
print(purse)
>> {'money': 12, 'tissues': 75, 'candy': 3}

print(purse['candy'])
>> 3

purse['candy'] = purse['candy'] + 2	# 'candy'라는 이름표를 가진 데이터에 +2 계산
print(purse)
>> {'money': 12, 'tissues': 75, 'candy': 5}

▶ purse = dict()

해당 명령문은 아래와 같은 뜻을 지닌다

 

▶ purse = {}

 

딕셔너리는 값을 찾기 위해 숫자 대신 키를 사용하는 것만 빼면 리스트와 동일하며

 

리스트와 동일하게 내부 요소 값 수정도 가능하다

 

 

◈ 딕셔너리 Traceback error

 

● 딕셔너리에 없는 키를 참조하면 오류 발생

● in 연산자를 활용하여 해당하는 키가 딕셔너리에 있는지 확인 가능

ccc = dict()
print(ccc['csev'])
>> Traceback error
>> KeyError: 'csev'

'csev' in ccc
>> False

 

 

◈ 딕셔너리의 get method

 

위의 Traceback Error 처럼 없는 키를 참조하면 오류가 발생한다

그런데,

get method를 활용한다면 키가 없을 경우 기본값으로  여기고 실행하며

Traceback Error가 발생하지 않는다

 

if name in counts :
	x = counts[name]
else :
	x = 0
    
x = counts.get(name, 0)

{'csev': 2, 'zqian': 1, 'cwen': 2}

 

● get() 을 이용한 간소화된 숫자 세기

: 키가 아직 사전에 없으면 get() 을 사용해 기본값을 줄 수 있다

 

counts = dict()
names = ['csev', 'cwen', 'csev', 'zqian', 'cwen']
for name in names :
	counts[name] = counts.get(name, 0) +1
print(counts)

>> {'csev': 2, 'zqian': 1, 'cwen': 2}

▶ counts.get(name, 0)을 사용해 기본값으로 0을 구성

▶ get method 뒤에 +1이 없다면 for 반복문을 돌며 조건식이 참이어도 계속 기본값을 유지한다

ex) counts[name] = counts.get(name, 0) 

>> {'csev': 0, 'zqian': 0, 'cwen': 0}

 

◎ 다른 예시

ddd = {}		# ddd = dict() 와 동일한 내용
lst = ["길동", "길순", "길영", "길민", "길순", "길영"]

for n in lst :
	ddd[n] = ddd.get(n, 0) +1
    
print(ddd)

 

 

▒ 긴 문장을 딕셔너리를 활용하여 각 단어의 개수를 구하고, 해당 단어의 총 합을 구해보자 ▒

hint) 여러 줄에 걸쳐 이루어진 문장의 경우 한 줄 한 줄마다 요소를 구분하게 만들고, 해당 요소들의 개수로 딕셔너리를 활용하면 된다.

'Python' 카테고리의 다른 글

Python 클래스와 객체  (0) 2023.03.05
python으로 DB 파일 출력 및 수정  (0) 2022.10.27
Python 과 File  (0) 2022.09.07
튜플(Tuple)  (0) 2022.09.06