파이썬 - 사전(Dictionaries)

안녕하세요, 자신감 넘치는 프로그래머 여러분! 오늘은 파이썬 사전의 흥미로운 세계에 빠지러 가요. 여러분의 친절한 이웃 컴퓨터 과학 교사로서 저도 이 여정을 안내해 드리게 되어 기쁩니다. 그럼, 좋아하는 음료수를 들고 편하게 앉아 이 모험을 함께 시작해볼까요!

Python - Dictionaries

파이썬에서의 사전

디지털 주소록을 만들어보세요. 친구들의 이름, 전화번호, 이메일 주소와 같은 정보를 저장하고 싶습니다. 어떻게 하면 될까요? 파이썬 사전을 소개합니다!

파이썬의 사전은 실세계 사전과 비슷하지만, 단어 정의 대신 키-값 쌍을 저장합니다. 이는 순서 없는, 변경 가능한, 중복을 허용하지 않는 컬렉션입니다.

사전의 주요 특징

  1. 키-값 쌍: 사전의 각 항목은 키와 해당 키에 대한 값을 포함합니다.
  2. 순서 없음: 리스트와는 달리 사전은 특정 순서가 없습니다.
  3. 변경 가능: 사전을 생성한 후 항목을 추가하거나 제거하거나 수정할 수 있습니다.
  4. 중복 허용 안함: 각 키는 사전 내에서 고유해야 합니다.

사전 생성

첫 번째 사전을 생성해 보겠습니다:

my_friend = {
"name": "Alice",
"age": 25,
"city": "New York"
}

이 예제에서 my_friend라는 사전을 생성했습니다. 키는 "name", "age", "city"이고, 해당하는 값은 "Alice", 25, "New York"입니다.

빈 사전을 생성하고 나중에 항목을 추가할 수도 있습니다:

empty_dict = {}
another_dict = dict()  # dict() 생성자 사용

사전 항목 접근

사전의 항목에 접근하려면, 중괄호 안에 키 이름을 사용합니다:

print(my_friend["name"])  # 출력: Alice

get() 메서드를 사용할 수도 있습니다. 이는 키가 존재하지 않을 때 None을 반환하기 때문에 안전합니다 (에러를 일으키는 대신):

print(my_friend.get("age"))  # 출력: 25
print(my_friend.get("job"))  # 출력: None

사전 항목 수정

사전은 가변이므로 생성 후 내용을 변경할 수 있습니다:

# 값 변경
my_friend["age"] = 26

# 새 키-값 쌍 추가
my_friend["job"] = "Engineer"

print(my_friend)
# 출력: {'name': 'Alice', 'age': 26, 'city': 'New York', 'job': 'Engineer'}

사전 항목 제거

사전에서 항목을 제거하는 방법은 여러 가지가 있습니다:

# 특정 항목 제거
del my_friend["age"]

# 항목 제거하고 반환
job = my_friend.pop("job")

# 마지막으로 추가된 항목 제거
last_item = my_friend.popitem()

print(my_friend)  # 출력: {'name': 'Alice'}

사전 반복

사전을 여러 가지 방법으로 반복할 수 있습니다:

# 키로 반복
for key in my_friend:
print(key)

# 값으로 반복
for value in my_friend.values():
print(value)

# 키와 값으로 반복
for key, value in my_friend.items():
print(f"{key}: {value}")

사전 키의 특성

사전 키에는 중요한 특성이 있습니다:

  1. 키는 불변해야 합니다 (문자열, 숫자, 튜플과 같은).
  2. 키는 사전 내에서 고유해야 합니다.

예를 들어:

valid_dict = {
"string_key": "value1",
42: "value2",
(1, 2): "value3"
}

# 이는 에러를 일으킵니다:
# invalid_dict = {[1, 2]: "value"}  # 리스트는 키로 사용할 수 없음

파이썬 사전 연산자

파이썬은 사전에 유용한 연산자를 제공합니다:

# 사전 병합 (파이썬 3.5+)
dict1 = {"a": 1, "b": 2}
dict2 = {"c": 3, "d": 4}
merged = {**dict1, **dict2}
print(merged)  # 출력: {'a': 1, 'b': 2, 'c': 3, 'd': 4}

# 키 존재 여부 확인
if "name" in my_friend:
print("Name is in the dictionary")

파이썬 사전 메서드

다음은 일반적으로 사용되는 사전 메서드의 표입니다:

메서드 설명
clear() 사전의 모든 항목을 제거합니다
copy() 사전의 얕은 복사를 반환합니다
fromkeys() 지정된 키와 값을 가진 새로운 사전을 생성합니다
get() 지정된 키의 값을 반환합니다
items() 사전의 (키, 값) 튜플 쌍의 리스트를 반환합니다
keys() 사전의 키 리스트를 반환합니다
pop() 지정된 키의 항목을 제거하고 반환합니다
popitem() 마지막으로 추가된 키-값 쌍을 제거하고 반환합니다
setdefault() 지정된 키의 값을 반환합니다. 키가 존재하지 않으면 키를 추가하고 지정된 값을 설정합니다
update() 사전을 지정된 키-값 쌍으로 업데이트합니다
values() 사전의 모든 값을 포함한 리스트를 반환합니다

사전과 함께 사용되는 내장 함수

파이썬은 사전과 잘 작동하는 여러 내장 함수를 제공합니다:

# 사전의 길이
print(len(my_friend))

# 사전의 형
print(type(my_friend))

# 다른 데이터 형을 사전으로 변환
list_of_tuples = [("a", 1), ("b", 2)]
dict_from_list = dict(list_of_tuples)
print(dict_from_list)  # 출력: {'a': 1, 'b': 2}

그렇게 여러분과 함께 파이썬 사전의 세계를 탐험했습니다. 생성부터 조작, 반복부터 내장 함수까지. 기억해요, 연습이 실력을 만든다는 말이 있습니다. 이러한 개념을 여러분의 코드에서 실험해보지 마세요.

마무리할 때, 코딩에 관한 코믹한 재미있는 이야기를 하나만 공유해 드리죠: 왜 파이썬 프로그래머들이 사전을 선호하나요?因为他们总是知道自己의 키가 어디에 있는지 때문입니다! ?

코딩을 계속하고, 호기심을 유지하며, 기억해요: 프로그래밍의 세계에서는 모든 오류가 새로운 학습 기회가 됩니다. 다음 번에 뵙겠습니다, 즐거운 코딩하세요!

Credits: Image by storyset