일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 파이썬 기초
- 코스모에듀벤처
- python
- pip 옵션
- 반복문 사용법
- pip uninstall
- data type
- 입출력 함수
- 변수 활용
- 인덱싱(indexing)
- 슬라이싱(slicing)
- 코스모에듀밴처
- cosmoeduventure
- 편집기
- 자료형
- 파이썬 강좌
- 조건부 표현식
- 파이썬 프로그래밍
- Indentation Error
- parameter
- 파이썬
- PIP
- 자료구조
- 파이썬 문법
- pip --help
- 변수
- input 사용법
- pip install
- python -m
- 파이썬개발
- Today
- Total
아이와 함께 배우는 세상 사는 법
[파이썬 강좌] 5. Python 프로그래밍 기초 : 맵핑형 자료형(data type) 본문
[파이썬 강좌] 5. Python 프로그래밍 기초 : 맵핑형 자료형(data type)
CosmoEduVenture 2024. 2. 19. 20:33
딕셔너리(dictionary)
딕셔너리(dictionary)는 키(key)와 값(value)이 한 쌍으로 맵핑된 자료형으로 시퀀스 자료형과 달리 순서가 없기 때문에 데이터에 접근할 때, 인덱스가 아닌 키(key)를 사용하여 값(value)에 접근할 수 있습니다.
딕셔너리 자료형 구조 및 사용법
객체 = { key : value }
dict1 = {key1:value1, key2:value2, key3:value3...}
딕셔너리는 중괄호({ })를 사용하여 키와 값 데이터 한 쌍을 맵핑하여 데이터를 저장.
키(key)와 값(value)은 콜론(:)을 사용하여 구분.
이때 키(key)는 선언되는 객체 내에서 중복되지 않은 유일성을 가지는 자료형만 사용할 수 있으며, 하나의 딕셔너리 객체에서 동일 한 키(key)를 사용하여 요소를 구성하면 마지막에 선언된 값(value)으로 덮어쓰게 되니 참고하세요.
# 딕셔너리 생성
dict1 = {} # 빈 딕셔너리
dict2 = {1: "apple", 'f1': "banana", 3: "orange"}
dict3 = {'k1': [1,2,3], 'k2': ('A','1'), 3: 'value3'}
# 자료형 변환
lst = [(key,value),(1,2)] # 리스트 자료형
dict4 = dict(lst) # 리스트를 딕셔너리 자료형으로 변환
딕셔너리의 키를 사용하여 데이터 접근하는 방법과 추가 및 삭제 그리고 메서드 사용 방법은 다음의 예제를 참고하세요.
# 딕셔너리 생성
my_dict = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
# 딕셔너리 키로 값 접근
print(my_dict['key1']) # 'value1' 출력
# 딕셔너리 값 변경
my_dict['key2'] = 'new_value2'
print(my_dict['key2'])
# 딕셔너리 키-값 쌍 추가
my_dict['key4'] = 'value4'
print(my_dict)
# 딕셔너리의 모든 키 가져오기
print(my_dict.keys())
# 딕셔너리의 모든 값 가져오기
print(my_dict.values())
# 딕셔너리에 키(key) 'k1'이 있는지 확인
print('key1' in my_dict) # True
print('key5' in my_dict) # False
# 딕셔너리에 값(value) 'value1'이 있는지 확인
print('value1' in my_dict.values())
# 딕셔너리 키(key) 삭제
del my_dict['key3']
print(my_dict)
# 딕셔너리의 모든 요소 삭제
my_dict.clear()
print(my_dict)
위 예제에서 in 연산자를 사용하여 딕셔너리 객체 내부에 해당 키가 있는지 확인하였습니다. 만약 5번째 줄의 코드와 같이 my_dict['key5'] 해당 키로 접근하면 에러가 발생하게 됩니다. 그렇다고 딕셔너리를 사용하여 코드를 작성 시 매번 예제와 같이 확인을 한다는 건 번거롭고 귀찮은 일이겠죠?
이러한 번거로움을 해소하기 위해 get()과 setdefault() 메서드를 제공하고 있습니다.
get() 메서드는 첫 번째 인자로 전달된 키(key)가 딕셔너리 내부에 있으면 해당 키(key)의 값(value)을 반환하고, 없으면 두 번째 인자로 전달된 값을 반환해 줍니다. 만약 두 번째 인자를 넣지 않으면 기본(default) 값인 "None"을 반환합니다.
my_dict = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
return_value1 = my_dict.get('key5')
return_value2 = my_dict.get('key5', "해당 키가 없음.")
print(return_value1) # None
print(return_value2) # 해당 키가 없음.
setdefault()는 딕셔너리 내부에 해당 키가 있다면 키의 값을 출력하고, 없다면 키와 값을 추가해 주는 메서드입니다.
my_dict = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}
return_value1 = my_dict.setdefault('key2', 'value5')
return_value2 = my_dict.setdefault('key4', 'value4')
print(return_value1) # value2
print(return_value2) # value4
만약 딕셔너리를 사용한 코드에서 get(), setdefault() 메서드를 사용하지 않고 존재하지 않는 키에 접근하면 에러와 함께 프로그램은 종료됩니다. 그렇기 때문에 딕셔너리 사용 시 get(), setdefault() 메서드를 사용하여 접근하도록 하세요.
위 예제들에서 사용된 메서드 외에도 다양한 메서드가 있으니 dir() 함수를 사용하여 확인해 보세요.
그리고 딕셔너리의 update()와 setdefault() 메서드를 비교하여 사용해 보시기 바랍니다.^^
세트(set)
파이썬은 수학의 집합을 자료형으로 제공하고 있으며, 이와 관련된 합집합, 교집합, 차집합 등의 연산도 가능합니다.
집합의 선언(생성)은 딕셔너리와 같이 중괄호({ }) 또는 set()을 사용하여 객체를 생성합니다.
집합객체명 = {원소1,원소2,원소3...}
집합객체명 = set(시퀀스 객체)
집합의 특징 및 사용법
집합(set)은 원소의 중복을 허용하지 않는다.
집합(set)은 딕셔너리 자료형과 같이 순서가 없다.
다른 자료형과 달리 '객체명[]'로 특정 원소에 접근할 수 없다.
# 집합 객체 생성
empty_set = set()
list_set = set([1, 2, 3]) # {1,2,3}
tuple_set = set((1, 2, 3)) # {1,2,3}
str_set = set('apple') # {'p', 'l', 'a', 'e'}
위 예제에서 문자열 'apple'을 세트(set) 자료형으로 변환 후 출력하여 확인해 보면 중복된 데이터 삭제되고 문자의 순서가 없음을 확인할 수 있습니다.
# 집합 선언
set1 = {1, 2, 3}
set2 = {3, 4, 5}
# 합집합
union_set = set1 | set2 # set1.union(set2)
# 교집합
intersection_set = set1 & set2 # set1.intersection(set2)
# 차집합
difference_set = set1 - set2 # set1.difference(set2)
# 여집합
complement_set = set1 ^ set2 # set1.symmetric_difference(set2)
# 다양한 메소드
set1.add(4)
set1.remove(2) # 삭제하려는 원소가 없으면 에러 발생
set1.discard(3) # 삭제하려는 원소가 없어도 에러가 발생하지 않음
set1.pop() # 임의의 원소를 제거하고 반환
set1.clear() # 모든 원소를 제거
# 집합 관련 함수
is_subset = set1.issubset(set2) # 부분 집합 여부를 판단
is_superset = set1.issuperset(set2) # 상위 집합 여부를 판단
is_disjoint = set1.isdisjoint(set2) # 중복 원소의 여부를 판단.
파이썬의 맵핑형 자료형과 관련하여 기본적인 사용법에 대해서 알아보았습니다.
파이썬의 숫자, 논리, 시퀀스형 자료형 관련 내용은 이전 포스팅을 참고하세요.^^
'파이썬(python) > 문법(syntax)' 카테고리의 다른 글
[파이썬 강좌] 6. Python 프로그래밍 기초 : 조건문(Conditional) (0) | 2024.02.20 |
---|---|
[파이썬 강좌] 인덱싱(Indexing)과 슬라이싱(Slicing)의 개념과 사용법 (0) | 2024.02.16 |
[파이썬 강좌] 4. Python 프로그래밍 기초 : 자료형(data type) (1) | 2024.02.15 |
[파이썬 강좌] 3. Python 프로그래밍 기초 : input() 함수 (0) | 2024.01.30 |
[파이썬 강좌] 2. Python 프로그래밍 기초 : print() 함수 : (2) | 2024.01.29 |