인프런 파이썬 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.
기초 자료형(딕셔너리)
- 기본 개념
딕셔너리 자료형은 순서가 없고 키의 중복을 허용하지 않지만, 수정 및 삭제는 가능한 자료형이다.
또한, 범용적으로 가장 많이 사용되는 자료형으로 타 언어의 오브젝트 및 JSON과 유사한 형태를 가진다.
# 선언 방식 a = {'name': 'Kim', 'phone': '01042438553', 'birth': '931021'} b = {0: 'Hello Python'} c = {'arr': [1, 2, 3, 4]} d = { 'Name': 'Niceman', 'City': 'Seoul', 'Age': 33, 'Grade': 'A', 'Status': True } e = dict([ ('Name', 'Niceman'), ('City', 'Seoul'), ('Age', 33), ('Grade', 'A'), ('Status', True) ]) f = dict( Name = 'Niceman', City = 'Seoul', Age = 33, Grade = 'A', Status = True ) # 딕셔너리를 선언하는 방법은 다양하다.(a, d, f형태의 방식을 가장 많이 사용함) # 딕셔너리는 키와 벨류로 구성되며, 키는 숫자형과 문자형 모두 가능하다. # 키만 존재한다면, 벨류에는 모든 자료형이 올 수 있다. # 딕셔너리 e의 경우에는 dict([])의 []안에서 튜플형태로 선언을 해야한다. # 즉, 키와 벨류 사이를 기호 ,로 구분하며 키와 벨류를 튜플형태로 감싸야한다. print('a - ', type(a), a) print('b - ', type(b), b) print('c - ', type(c), c) print('d - ', type(d), d) print('e - ', type(e), e) print('f - ', type(f), f) # 모두 <class 'dict'>의 결과 값이 출력된다.(딕셔너리 타입) # 출력 방식 print('a - ', a['name']) # 결과 : a - Kim print('a - ', a['name1']) # 결과 : KeyError: 'name1' # 딕셔너리에서 찾고자하는 키가 존재하지 않는 경우, 에러가 발생한다. print('a - ', a.get('name')) # 결과 : a - Kim print('a - ', a.get('name1')) # 결과 : a - None # 딕셔너리에서 찾고자하는 키가 존재하지 않는 경우, 에러는 발생하지 않으며 # 결과 값으로 None을 출력한다. # 즉, get( ) 함수를 사용하면 찾고자하는 키가 존재하지 않아도 에러가 발생하지 않고, # None값을 결과로 출력하기 때문에 에러 발생으로 프로그램이 중단되는 경우를 방지할 수 있다. # 이러한 이유로 키를 통해 벨류를 출력할 때에는 get( ) 함수를 더 많이 사용한다. print('b - ', b[0]) # 결과 : b - Hello Python print('b - ', b.get(0)) # 결과 : b - Hello Python print('f - ', f.get('City')) # 결과 : f - Seoul print('f - ', f.get('Age')) # 결과 : f - 33
- 응용 개념
# 딕셔너리에 데이터 추가 예시 a = {'name': 'Kim', 'phone': '01042438553', 'birth': '931021'} b = {0: 'Hello Python'} c = {'arr': [1, 2, 3, 4]} d = { 'Name': 'Niceman', 'City': 'Seoul', 'Age': 33, 'Grade': 'A', 'Status': True } e = dict([ ('Name', 'Niceman'), ('City', 'Seoul'), ('Age', 33), ('Grade', 'A'), ('Status', True) ]) f = dict( Name = 'Niceman', City = 'Seoul', Age = 33, Grade = 'A', Status = True ) a['address'] = 'seoul' print('a - ', a) # 딕셔너리에 데이터(seoul)를 추가하는 방식이다. # 여기서 address는 딕셔너리의 새로운 키가 되고, seoul은 벨류가 된다. a['name'] = 'Lee' print('a - ', a) # 기존의 키(name)에 새로운 벨류(Lee)를 추가하는 방식으로 코드를 작성하면, # 이는 데이터를 추가하는 것이 아니라 수정하는 것이 된다. # 즉, 키 name의 벨류가 Kim에서 Lee로 수정된다. a['rank'] = [1, 2, 3] print('a - ', a) # 딕셔너리에 리스트 자료형도 데이터로 추가할 수 있다. # 여기서 rank는 딕셔너리의 새로운 키가 되고, 리스트 [1, 2, 3]는 벨류가 된다. # 딕셔너리의 키 관련 참고 예시 print('a - ', len(a)) # 결과 : 5 print('b - ', len(b)) # 결과 : 1 print('c - ', len(c)) # 결과 : 1 print('d - ', len(d)) # 결과 : 5 # 딕셔너리는 시퀀스형이므로, len( )함수를 사용할 수 있으며, # len( )함수를 사용하면 딕셔너리의 키 갯수를 카운팅해서 출력할 수 있다. # 딕셔너리의 함수 사용 예시 a = {'name': 'Kim', 'phone': '01042438553', 'birth': '931021'} b = {0: 'Hello Python'} c = {'arr': [1, 2, 3, 4]} d = { 'Name': 'Niceman', 'City': 'Seoul', 'Age': 33, 'Grade': 'A', 'Status': True } e = dict([ ('Name', 'Niceman'), ('City', 'Seoul'), ('Age', 33), ('Grade', 'A'), ('Status', True) ]) f = dict( Name = 'Niceman', City = 'Seoul', Age = 33, Grade = 'A', Status = True ) print('a - ', a.keys()) # 결과 : a - dict_keys(['name', 'phone', 'birth', 'address']) print('b - ', b.keys()) # 결과 : b - dict_keys([0]) print('c - ', c.keys()) # 결과 : c - dict_keys(['arr']) print('d - ', d.keys()) # 결과 : d - dict_keys(['Name', 'City', 'Age', 'Grade', 'Status']) # keys( ) 함수는 딕셔너리의 키만 가져온다. print('a - ', a.values()) # 결과 : # dict_values(['Lee', '01042438553', '931021', 'seoul', [1, 2, 3]]) print('b - ', b.values()) # 결과 : b - dict_values(['Hello Python']) print('c - ', c.values()) # 결과 : c - dict_values([[1, 2, 3, 4]]) print('d - ', d.values()) # 결과 : d - dict_values(['Niceman', 'Seoul', 33, 'A', True]) # values( ) 함수는 딕셔너리의 벨류만 가져온다. print('a - ', a.items()) print('b - ', b.items()) print('c - ', c.items()) print('d - ', d.items()) # items( ) 함수는 딕셔너리의 키와 벨류를 둘 다 가져온다. print('a - ', list(a.keys())) print('b - ', list(b.keys())) print('a - ', list(a.values())) print('b - ', list(b.values())) print('a - ', list(a.items())) print('b - ', list(b.items())) # keys( ) 함수, values( ) 함수 그리고 items( ) 함수를 통해 # 얻은 결과 값은 모두 list( ) 함수를 사용하여 형 변환을 할 수 있다. # dict_keys, dict_values, dict_items 함수 모두 반복문에서 주로 사용된다. print('a - ', a.pop('name')) print('a - ', a) # pop( ) 함수를 사용하면 키가 name인 벨류를 가져오는 동시에, # 기존의 딕셔너리에서 해당 키와 벨류를 모두 삭제한다. print('c - ', c.pop('arr')) print('c - ', c) # 위와 동일한 원리(결과 값으로 빈 딕셔너리가 출력됨) print('f - ', f.popitem()) print('f - ', f) print('f - ', f.popitem()) print('f - ', f) print('f - ', f.popitem()) print('f - ', f) print('f - ', f.popitem()) print('f - ', f) print('f - ', f.popitem()) print('f - ', f) # popitem( ) 함수는 딕셔너리의 키와 벨류를 무작위로 가져오며, # 기존의 딕셔너리에서 해당 키와 벨류를 삭제한다. # 키와 벨류를 무작위로 가져오는 이유는 딕셔너리에는 순서가 없기 때문이며, # 더 이상 가져올 수 있는 키와 벨류가 없다면 빈 딕셔너리를 출력한다. print('a - ', 'birth' in a) # 결과 : a - True # in 연산자는 딕셔너리 안에 해당 키가 존재하는지 여부를 알려준다. # 만약, 해당 키가 존재하면 True 값을, 없으면 False 값을 출력한다. print('a - ', 'birth2' in a) # 결과 : a - False # in 연산자를 사용해서 키를 찾을 때는 반드시 대소문자를 구분해야 하며, # 만약, 대소문자가 다르면 키의 스펠링이 같더라도 찾지 못하고 False 값을 출력한다. # 수정 예시 a['address'] = 'dj' print('a - ', a) # address 키의 벨류를 dj로 수정한다. a.update(birth = '950321') print('a - ', a) # update( ) 함수를 사용하면, birth 키의 벨류를 950321로 수정할 수 있다. temp = {'address': 'Busan'} a.update(temp) print('a - ', a) # 이러한 형태로도 address 키의 벨류를 Busan으로 수정할 수 있다.
'Python' 카테고리의 다른 글
Python - if문 (0) | 2021.10.14 |
---|---|
Python - 기초 자료형(집합) (0) | 2021.10.13 |
Python - 기초 자료형(튜플) (0) | 2021.10.13 |
Python - 기초 자료형(리스트) (0) | 2021.10.13 |
Python - 기초 자료형(문자형) (0) | 2021.10.13 |
댓글