파이썬 딕셔너리 만들기: 설명과 예제
이번 포스트는 파이썬 딕셔너리를 만들기 위한 다양한 방법을 알아봅니다.
해당하는 내용은 다음과 같습니다.
- 리스트로 혹은 튜플로 딕셔너리 만들기
for
문으로 딕셔너리 만들기- 중첩 딕셔너리 만들기
- 딕셔너리를 활용해서 사전, 전화번호부 만들기
- 딕셔너리로 데이터프레임 만들기
1. 일반적으로 딕셔너리 만들기
파이썬의 딕셔너리(dictionary)는 키(key)와 값(value)을 한 쌍으로 하는 요소들을 가지는 컬렉션 타입입니다. 딕셔너리는 변경 가능하고, 인덱스로는 사용될 수 없지만 키를 이용하여 값을 참조할 수 있습니다. 또한, 키는 딕셔너리 내에서 유일해야 합니다.
다른 컬렉션 타입과의 비교를 한 눈에 알아보기 위해, 이 포스트를 참고하세요.
기본적인 딕셔너리 생성 방법은 중괄호 {}
를 사용하고, 키와 값은 콜론 :
으로 연결됩니다.
빈 딕셔너리, 값을 가진 딕셔너리를 만드는 방법은 각각 다음과 같습니다.
empty_dict_1 = {}
empty_dict_2 = dict()
my_dict = {"apple": 1, "banana": 2, "cherry": 3}
위 코드에서 "apple"
, "banana"
, "cherry"
는 키를 나타내고, 1
, 2
, 3
은 각 키에 해당하는 값을 나타냅니다.
2. 리스트로 딕셔너리 만들기
리스트를 딕셔너리로 변환하는 것은 매우 간단합니다.
우선, 리스트의 모든 요소를 키로 하고, 모든 키가 동일한 초기값을 가진 딕셔너리를 만드는 방법입니다.
이러한 경우를 위해, 파이썬 딕셔너리는 fromkeys()
함수를 제공합니다.
예제로 확인하겠습니다.
keys = ["apple", "banana", "cherry"]
my_dict = dict.fromkeys(keys)
my_dict_0 = dict.fromkeys(keys, 0)
# Output
my_dict {'apple': None, 'banana': None, 'cherry': None}
my_dict_0 {'apple': 0, 'banana': 0, 'cherry': 0}
예제에서 확인했듯이, 초기값을 파라미터로 전달하지 않으면 모든 키의 값은 None
으로 설정합니다.
만약, 딕셔너리의 키에 각각 원하는 값을 설정하라면, zip()
함수와 dict()
함수를 사용하여 키와 값 리스트를 딕셔너리로 변환할 수 있습니다.
zip()
함수는 keys
리스트와 values
리스트를 튜플의 형태로 묶어주며, dict()
함수는 이 튜플을 딕셔너리로 변환합니다.
이렇게 하면 두 리스트가 합쳐진 새로운 딕셔너리를 생성할 수 있습니다.
keys = ["apple", "banana", "cherry"]
values = [1, 2, 3]
my_dict = dict(zip(keys, values))
3. 튜플로 딕셔너리 만들기
리스트와 마찬가지로, 튜플도 딕셔너리로 쉽게 변환할 수 있습니다.
모든 값을 일정하게 설정한다면, 리스트와 마찬가지로 fromkeys()
함수를 사용할 수 있습니다.
예제로 확인하겠습니다.
keys = ("apple", "banana", "cherry")
my_dict_0 = dict.fromkeys(keys, 0)
# Output
my_dict_0 {'apple': 0, 'banana': 0, 'cherry': 0}
서로 다른 값을 부여하기 위해서는, 튜플의 첫 번째 요소가 키가 되고, 두 번째 요소가 값이 되는 방식으로 딕셔너리를 만듭니다.
아래와 같4ㅣ, 튜플에 dict()
함수를 적용하면, 각 튜플이 딕셔너리의 키-값 쌍으로 변환됩니다.
tuples = (("apple", 1), ("banana", 2), ("cherry", 3))
my_dict = dict(tuples)
4. for문으로 딕셔너리 만들기
딕셔너리 컴프리헨션(dictionary comprehension)을 사용하면, for
문을 이용해 동적으로 딕셔너리를 생성할 수 있습니다.
예를 들어, 1부터 5까지의 숫자를 키로 하고, 그 숫자의 제곱을 값으로 하는 딕셔너리를 만들어보겠습니다.
squares = {i: i**2 for i in range(1, 6)}
5. 중첩 딕셔너리 만들기 (딕셔너리 안에 딕셔너리 만들기)
딕셔너리 안에 또 다른 딕셔너리(중첩 딕셔너리)를 넣을 수도 있습니다. 이렇게 하면 데이터를 계층적으로 구조화할 수 있습니다.
아래 예제에서 중첩 딕셔너리의 "fruit"
와 "vegetable"
은 상위 딕셔너리의 키이며, 이 키에 해당하는 각각의 값은 또 다른 딕셔너리입니다.
nested_dict = {
"fruit": {"apple": 1, "banana": 2},
"vegetable": {"carrot": 3, "pepper": 4}
}
6. 딕셔너리로 사전 만들기
딕셔너리는 실제 사전처럼 사용할 수도 있습니다. 여기서는 간단한 영-한 사전을 만들어 보겠습니다.
dictionary = {
"apple": "사과",
"banana": "바나나",
"cherry": "체리"
}
이 코드에서 영어 단어는 키로 사용되고, 그 단어의 한국어 번역은 값으로 사용됩니다.
7. 딕셔너리로 전화번호부 만들기
딕셔너리를 사용하여 간단한 전화번호부를 만들 수도 있습니다. 사람들의 이름을 키로 사용하고, 그들의 전화번호를 값으로 사용하면 됩니다.
phonebook = {
"John": "010-1234-5678",
"Jane": "010-9876-5432",
"Mike": "010-1357-2468"
}
8. 딕셔너리로 데이터프레임 만들기
데이터프레임은 판다스 라이브러리에서 제공하는 2차원 테이블 형식의 데이터 구조입니다. 이 자료구조는 여러 개의 열(column)을 가지며, 각 열은 서로 다른 타입의 값(int, float, str 등)을 가질 수 있습니다.
딕셔너리를 이용하면 데이터프레임을 쉽게 만들 수 있습니다.
import pandas as pd
data = {
"Name": ["John", "Anna", "Peter"],
"Age": [28, 24, 33],
"City": ["New York", "Paris", "Berlin"]
}
df = pd.DataFrame(data)
# Output
Name Age City
0 John 28 New York
1 Anna 24 Paris
2 Peter 33 Berlin
이 코드에서는 각각의 키가 데이터프레임의 열 이름이 되고, 그 키에 연결된 리스트가 해당 열의 값이 됩니다.
데이터프레임을 출력하면, 열 이름("Name"
, "Age"
, "City"
)과 그에 대응하는 값들을 볼 수 있습니다.
마치며
딕셔너리는 파이썬에서 매우 유용한 데이터 구조입니다. 데이터를 쉽게 저장하고, 검색하고, 조작할 수 있기 때문입니다.
이 포스트에서 알아본 다양한 파이썬 딕셔너리 만들기 방법으로 실제 개발에 도움이 되길 바랍니다.