[Python 입문 강좌 - 11] 파이썬 딕셔너리(Dictionary) 정리 및 사용법

 

더보기

 

파이썬에서 딕셔너리는 각 키에 대응하는 값을 저장하는 자료 구조이다. 키와 값은 쌍으로 구성되어 있어, 키를 사용하여 값에 쉽게 접근할 수 있다. 이 글에서는 딕셔너리의 정의, 생성, 접근, 제거, 반복, 메소드 등에 대해서 알아볼 것이다.


1. 딕셔너리 란?

 

파이썬 딕셔너리는 키와 값의 쌍으로 구성된 자료 구조이다. 키는 유일해야 하며, 값은 중복이 허용된다. 딕셔너리는 중괄호({})를 사용하여 표현하며, 키와 값은 콜론(:)으로 구분한다. 딕셔너리는 리스트와는 다르게 순서가 없다. 또한 튜플과 다르게 변경이 가능하다.

 

딕셔너리 이미지

 


1.1 딕셔너리와 리스트의 차이점

 

파이썬에서 딕셔너리와 리스트는 둘 다 여러 개의 값을 저장할 수 있는 자료 구조이지만, 사용 방식과 특징이 다르다. 

 

1.1.1 리스트

 

  • 리스트는 순서가 있는 자료 구조이다.
  • 리스트에서 요소에 접근할 때는 순서(인덱스)를 사용한다.
  • 리스트는 많은 양의 데이터를 효율적으로 저장하기에 적합하지 않다.

 

리스트 이미지

 

1.1.2 딕셔너리

 

  • 딕셔너리는 키와 값의 쌍으로 구성된 자료 구조로 순서가 없다.
  • 딕셔너리에서 요소에 접근할 때는 키를 사용한다.
  • 딕셔너리는 많은 양의 데이터를 효율적으로 저장하기에 적합하다.

 


2. 딕셔너리 생성 방법

2.1 괄호 사용 방법

 

가장 기본적인 생성 방법으로 {} 괄호를 이용해 딕셔너리를 생성하는 방법이다.

 

# 예시 1
>>> person = {'name': 'John Doe', 'age': 30, 'city': 'Seoul'}

# 예시 2
>>> numbers = {1: 'one', 2: 'two', 3: 'three'}

 


2.2 dict() 함수 사용 방법

 

파이썬 dict()함수는 딕셔너리를 생성하는 함수이다. 아래 코드는 키와 값의 쌍으로 구성된 딕셔너리를 생성하는 예제로 name, age, city가 키 값이고 John Doe, 30, Seoul이 값이다.

 

 

>>> person = dict(name='John Doe', age=30, city='Seoul')
>>> print(person)
{'name': 'John Doe', 'age': 30, 'city': 'Seoul'}

 


2.3 Zip(), Dict()함수 사용 방법

 

파이썬 zip()함수는 여러 개의 리스트를 같은 위치에 있는 요소끼리 묶어서 튜플의 리스트를 생성하는 함수이다. 아래 코드는 keys, values 리스트의 각 요소를 zip()함수를 이용해 요소끼리 묶고 생성된 튜플의 리스트 [('name','John Doe'),('age',30),('city','Seoul')]를 dict()함수를 통해 딕셔너리로 변환하는 코드이다.

 

 

zip(), Dict()함수 사용 방법 이미지

 

 

>>> keys = ['name', 'age', 'city']
>>> values = ['John Doe', 30, 'Seoul']
>>> person = dict(zip(keys, values))
>>> print(person)
{'name': 'John Doe', 'age': 30, 'city': 'Seoul'}

 


3. 딕셔너리에 요소 추가하기

 

파이썬 딕셔너리에 새로운 요소를 추가할 때에는 아래 코드와 같이 "딕셔너리 이름[key] = value"를 통해 새로운 요소를 추가 할 수 있다.

 

>>> person = {'name': 'John Doe', 'age': 30, 'city': 'Seoul'}
>>> person['gender'] = 'Male'
>>> print(person)
{'name': 'John Doe', 'age': 30, 'city': 'Seoul', 'gender': 'Male'}

 


4. 딕셔너리에 요소 변경하기

 

파이썬 딕셔너리에서 기존에 있는 요소의 값을 변경하려면, 아래 코드와 같이 "딕셔너리 이름[key] = value"를 통해 기존에 있던 요소를 새로운 요소의 값으로 변경할 수 있다.

 

>>> person = {'name': 'John Doe', 'age': 30, 'city': 'Seoul'}
>>> person['age'] = 31
>>> print(person)
{'name': 'John Doe', 'age': 31, 'city': 'Seoul'}

 



5. 딕셔너리 요소 접근하기

5.1 key를 이용하는 방법

 

파이썬 딕셔너리에서 키를 사용하여 값에 접근하는 방법은 아래 코드와 같이 "딕셔너리 이름[key]" 를 통해 요소에 접근할 수 있다.

 

>>> person = {'name': 'John Doe', 'age': 30, 'city': 'Seoul'}
>>> print(person['name'])
'John Doe'

 


5.2 get()메서드를 이용하는 방법

 

get() 메서드를 사용하여 파이썬 딕셔너리에서 값에 접근할 수 있다. get() 메소드는 요소가 없을 경우 None을 반환한다. 아래 코드에서 gender라는 요소가 없어 None을 반환한다.

 

>>> person = {'name': 'John Doe', 'age': 30, 'city': 'Seoul'}
>>> print(person.get('gender'))
None

 


6. 딕셔너리 요소 제거

6.1 Pop()메서드를 이용하는 방법

 

pop() 메서드를 사용하여 파이썬 딕셔너리에서 요소를 제거할 수 있다. pop() 메서드는 제거된 요소의 값을 반환한다. 

 

>>> person = {'name': 'John Doe', 'age': 30, 'city': 'Seoul'}
>>> person.pop('age')
>>> print(person)
{'name': 'John Doe', 'city': 'Seoul'}

 


6.2 del 구문을 이용하는 방법

 

del 구문을 사용하여 파이썬 딕셔너리에서 요소를 제거할 수 있다. 제거 방법은 아래 코드와 같이 "del 딕셔너리 이름[key]" 를 통해 제거할 수 있다.

 

>>> person = {'name': 'John Doe', 'age': 30, 'city': 'Seoul'}
>>> del person['age']
>>> print(person)
{'name': 'John Doe', 'city': 'Seoul'}

 


6.3 clear() 메서드를 사용하는 방법

 

clear() 메서드를 사용하여 파이썬 딕셔너리에서 모든 요소를 제거할 수 있다. 

 

>>> person = {'name': 'John Doe', 'age': 30, 'city': 'Seoul'}
>>> person.clear()
>>> print(person)
{}

 


7. 딕셔너리 메서드

7.1 딕셔너리 키를 가져오는 메서드

 

keys() 메소드를 사용하여 파이썬 딕셔너리의 키만을 가져올 수 있다.

 

>>> person = {'name': 'John Doe', 'age': 30, 'city': 'Seoul'}
>>> print(person.keys())
dict_keys(['name', 'age', 'city'])

 


7.2 딕셔너리의 값을 가져오는 메서드

 

values() 메소드를 사용하여 파이썬 딕셔너리의 값만을 가져올 수 있다.

 

>>> person = {'name': 'John Doe', 'age': 30, 'city': 'Seoul'}
>>> print(person.values())
dict_values(['John Doe', 30, 'Seoul'])

 


7.3 딕셔너리의 복사본을 생성하는 메서드

 

copy() 메소드를 사용하여 파이썬 딕셔너리의 복사본을 생성할 수 있다.

 

>>> person = {'name': 'John Doe', 'age': 30, 'city': 'Seoul'}
>>> person_copy = person.copy()
>>> print(person_copy)
{'name': 'John Doe', 'age': 30, 'city': 'Seoul'}

 


8. 딕셔너리의 응용 사용법

8.1 중첩 딕셔너리

 

파이썬 딕셔너리에서 딕셔너리를 다중으로 중첩할 수 있다.

 

>>> person = {'name': 'John Doe', 'age': 30, 'address': {'street': '123 Main St', 'city': 'Seoul', 'zip': 123456}}
>>> print(person)
{'name': 'John Doe', 'age': 30, 'address': {'street': '123 Main St', 'city': 'Seoul', 'zip': 123456}}

 


8.2 반복문을 이용한 딕셔너리 키와 값 동시 처리

 

반복문(for)과 파이썬 딕셔너리를 사용하여, 딕셔너리의 키와 값을 동시에 처리할 수 있다. 반복문(for)은 이후 강좌에서 자세히 배울 예정이다.

 

>>> person = {'name': 'John Doe', 'age': 30, 'city': 'Seoul'}
>>> for key,value in person.items():
>>> 	print(f"{key}: {value}")

name: John Doe
age: 30
city: Seoul

 


8.3 조건문을 이용한 딕셔너리 특정 키 존재 확인

 

조건문(if)과 파이썬 딕셔너리를 사용하여, 딕셔너리에 특정 키가 존재하는지 확인할 수 있다. 조건문(if)은 이후 강좌에서 자세히 배울 예정이다.

 

>>> person = {'name': 'John Doe', 'age': 30, 'city': 'Seoul'}
>>> if 'age' in person:
>>>   print("Key 'age' exists in the dictionary.")
>>> else:
>>>   print("Key 'age' does not exist in the dictionary.")

"Key 'age' exists in the dictionary."

 


9. FAQ

9.1 딕셔너리에서 키와 값의 순서는 중요한가요?

 

딕셔너리에서 키와 값의 순서는 중요하지 않다. 딕셔너리는 키를 사용하여 값에 접근하기 때문에, 순서는 중요하지 않다.

 


9.2 딕셔너리에서 키는 중복될 수 있나요?

 

딕셔너리에서 키는 중복될 수 없다. 같은 키를 가진 요소가 추가될 경우, 새로운 요소가 이전 요소를 덮어씌운다.

 


9.3 딕셔너리에서 값은 중복될 수 있나요?

 

딕셔너리에서 값은 중복될 수 있다. 딕셔너리는 키를 사용하여 값에 접근하기 때문에, 동일한 값을 가진 요소가 여러 개 존재할 수 있다.

 


9.4 딕셔너리에서 문자열과 숫자 타입의 키를 같이 사용할 수 있나요?

 

딕셔너리에서 문자열과 숫자 타입의 키를 같이 사용할 수 있다. 딕셔너리의 키는 문자열, 숫자, 튜플 등 다양한 타입의 값을 가질 수 있다.

 


9.5 딕셔너리에서 키와 값의 타입은 같아야 하나요?

 

딕셔너리에서 키와 값에 다양한 타입의 값을 가질 수 있다. 단, 키는 가변 타입의 값(리스트, 딕셔너리 등)을 가질 수 없다.