파이썬의 dict (사전, Dictionary)는 키-값 쌍을 저장하는 데이터 구조이다. dict는 해시 맵 또는 연관 배열로도 알려져 있으며, 매우 유용하다. 그 외에도 다양한 용도로 활용된다.
빈 dict
를 생성하려면 중괄호 {}
를 사용하거나 dict()
생성자를 호출한다.
초기값을 가진 dict
를 생성할 때 중괄호 내에 키-값 쌍을 지정한다.
my_dict = {} # 빈 사전
person = {'name': 'Alice', 'age': 30, 'city': 'New York'}
dict에서 값을 얻으려면 키를 사용한다.
name = person['name']
in
키워드를 사용하여 키의 존재 여부를 확인할 수 있다.
if 'age' in person:
# 'age' 키가 존재하면 실행
새로운 키-값 쌍을 추가하거나 기존 키의 값을 수정할 수 있다.
person['email'] = 'alice@example.com' # 새로운 키-값 추가
person['age'] = 31 # 'age' 키의 값 수정
del
키워드를 사용하여 특정 키-값 쌍을 삭제할 수 있다.
del person['city'] # 'city' 키-값 삭제
keys()
, values()
, items()
메서드를 사용하여 각각 키, 값, 키-값 쌍을 가져올 수 있다.
keys = person.keys() # 모든 키 가져오기
values = person.values() # 모든 값 가져오기
items = person.items() # 모든 키-값 쌍 가져오기
for
루프를 사용하여 dict의 키, 값, 또는 항목을 순회할 수 있다.
for key in person:
print(key, person[key])
dict는 데이터를 효율적으로 검색하는 데 매우 유용하며, 파이썬에서 많이 활용된다.
**
을 사용하여 딕셔너리를 선언하는 것은 "키워드 인자" 또는 "키워드 아규먼트"를 활용한 방식이라고 한다. 이를 사용하는 이유와 장점은 다음과 같다.
**
를 사용하면 함수 호출 시 매개변수와 값을 직관적으로 나열할 수 있어 가독성이 향상된다. 이는 특히 함수에 많은 매개변수가 필요한 경우에 유용하다.
**
를 사용하면 함수가 어떤 키워드 인자를 기대하는지 명확하게 나타낼 수 있다. 이렇게 하면 함수를 사용하는 사람이 함수 시그니처를 이해하고 올바르게 사용하기가 더 쉬워진다.
함수가 추가 매개변수를 지원하도록 업데이트되면, 기존 코드를 변경하지 않고 **
를 사용하여 함수를 호출할 수 있다.
**
을 사용하는 것은 특히 함수의 인자가 많고 복잡한 경우, 키워드 인자를 정확하게 전달하고 관리하는 데 유용하다.
파이썬에서 set은 순서가 없고 중복을 허용하지 않는 데이터 구조로, 중괄호 {}
를 사용하여 정의된다. Set은 수학적인 집합 개념과 유사하며, 고유한 원소로 구성된다.
my_list = [1, 2, 2, 3, 4, 4, 5]
my_set = set(my_list) # 중복 제거
print(my_set) # 출력: {1, 2, 3, 4, 5}
my_set = {1, 2, 3, 4, 5}
print(3 in my_set) # 출력: True
print(6 in my_set) # 출력: False
set1 = {1, 2, 3, 4, 5}
set2 = {3, 4, 5, 6, 7}
union_set = set1 | set2 # 합집합
intersection_set = set1 & set2 # 교집합
difference_set = set1 - set2 # 차집합
print(union_set) # 출력: {1, 2, 3, 4, 5, 6, 7}
print(intersection_set) # 출력: {3, 4, 5}
print(difference_set) # 출력: {1, 2}
my_set = {1, 2, 3}
my_set.add(4) # 원소 추가
my_set.remove(2) # 원소 제거
print(my_set) # 출력: {1, 3, 4}
squared_numbers = {x**2 for x in range(1, 6)}
print(squared_numbers) # 출력: {1, 4, 9, 16, 25}
Set은 많은 유용한 용도와 메서드를 제공하며, 데이터를 고유하게 유지하고 집합 연산을 수행할 때 매우 효과적이다.