딕셔너리
사전이란 뜻이며, 딕셔너리는 Key와 Value를 한 쌍으로 가지는 자료형 입니다.
딕셔너리는 리스트나 튜플처럼 순차적으로(sequential) 해당 요솟값을 구하지 않고 Key를 통해 Value를 얻으며, 이것이 바로 딕셔너리의 가장 큰 특징입니다.
#기본 형식 {Key1: Value1, Key2: Value2, Key3: Value3, ...} 예시: dic = {'name': 'pey', 'phone': '010-9999-1234', 'birth': '1118'} 예시: a = {'나이' : 15, '이름' : 'Kevin'} print(a['나이']) 출력: 15 #참고로 리스트로 넣을 수 있습니다 a = {'나이' : [15, 16 ,17], '이름' : 'Kevin'} print(a['나이']) 출력: [15, 16, 17]
값 추가하기, 삭제하기
#값 추가 a = {1 : 'a'} a[2] = 'b' print(a) 출력: {1: 'a', 2: 'b'} a = {1 : 'a'} a['a'] = 2 print(a) 출력: {1: 'a', 'a': 2} #삭제는 똑같이 del을 쓰는데, del a[key]를 입력하면 지정한 Key에 해당하는 {Key: Value} 쌍이 삭제된다. del a[2] print(a) 출력: {1: 'a'}
주의 할 점
key 값은 같으면 처음 value 값이 반환되며, key 값에 리스트를 넣을 수 없습니다.
딕셔너리 관련 함수#Key 리스트 만들기 - keys a = {'name': 'pey', 'phone': '010-9999-1234', 'birth': '1118'} a.keys() #a.keys()는 딕셔너리 a의 Key만을 모아 dict_keys 객체를 리턴합니다. 출력: dict_keys(['name', 'phone', 'birth']) #Value 리스트 만들기 - values #values 함수를 호출하면 dict_values 객체를 리턴합니다. a.values() 출력: dict_values(['pey', '010-9999-1234', '1118']) #Key, Value 쌍 얻기 - items - #items 함수는 Key와 Value의 쌍을 튜플로 묶은 값을 dict_items 객체로 리턴한다. a.items() 출력: dict_items([('name', 'pey'), ('phone', '010-9999-1234'), ('birth', '1118')]) #Key: Value 쌍 모두 지우기 - clear a.clear() a # 빈 딕셔너리인 {}을 반환 출력: {} #Key로 Value 얻기 - get a = {'name': 'pey', 'phone': '010-9999-1234', 'birth': '1118'} a.get('name') 출력: 'pey' #a.get('name')은 a['name']을 사용했을 때와 동일한 결괏값을 리턴합니다 #하지만 존재하지 않는 키워드를 가져올 때 .get()은 none을 반환하고, 일반적 방법은 에러를 발생시킵니다 #그것을 어떻게 사용할 것인가에 따라 다릅니다. #해당 Key가 딕셔너리 안에 있는지 조사하기 - in print('name' in a) print('email' in a) 출력: True False
집합 자료형
집합(set)은 집합에 관련된 것을 쉽게 처리하기 위해 만든 자료형이다.
#집합 자료형은 set 키워드를 통해 사용할 수 있습니다 a = set([1,2,3]) print(a) 출력: {1, 2, 3} #set()의 괄호 안에 리스트를 입력하여 만들거나 다음과 같이 문자열을 입력하여 만들 수도 있습니다. b = set('Pytthonn') print(b) #참고로 알아야 할 사항이 두개 있습니다. #중복을 허용하지 않는다. #순서가 없다(Unordered). #set은 중복을 허용하지 않는 특징 때문에 데이터의 중복을 제거하기 위한 필터로 종종 사용됩니다. 출력: {'h', 't', 'P', 'y', 'o', 'n'} #만약 set 자료형에 저장된 값을 인덱싱으로 접근하려면 리스트나 튜플로 변환한 후에 해야 합니다. b = list(b) b.sort() print(b) 출력: ['P', 'h', 'n', 'o', 't', 'y'] #교집합, 합집합, 차집합 구하기 a = set([1,2,3,4,5,6]) b = set([4,5,6,7,8,9]) #‘&’를 이용하면 교집합을 간단히 구할 수 있습니다 print(a & b) 출력: {4, 5, 6} #intersection 함수를 사용해도 결과는 동일합니다 print(a.intersection(b)) 출력: {4, 5, 6} #‘|’를 사용하면 합집합을 구할 수 있습니다. 이때 4, 5, 6처럼 중복해서 포함된 값은 1개씩만 표현됩니다. print(a|b) 출력: {1, 2, 3, 4, 5, 6, 7, 8, 9} #union 함수도 있습니다 print(a.union(b)) 출력: {1, 2, 3, 4, 5, 6, 7, 8, 9} #-(빼기)를 사용하면 차집합을 구할 수 있습니다. print(a-b) 출력: {1, 2, 3} #difference 함수를 사용해도 구할 수 있습니다 print(a.difference(b)) 출력: {1, 2, 3} print(b.difference(a)) 출력: {8, 9, 7} #값 추가하기 - add() a = set([1,2,3]) a.add(4) print(a) 출력: {1, 2, 3, 4} #값 여러 개를 추가할 떄 - update() a.update([5,6,7]) print(a) 출력: {1, 2, 3, 4, 5, 6, 7} #값 제거할 떄 -remove() a.remove(6) print(a) 출력: {1, 2, 3, 4, 5, 7}
BOOL
불(bool) 자료형이란 참(True)과 거짓(False)을 나타내는 자료형이다. 불 자료형은 다음 2가지 값만을 가질 수 있습니다.
True: 참을 의미합니다.
False: 거짓을 의미합니다.
True나 False는 파이썬의 예약어로, true, false와 같이 작성하면 안 되고 첫 문자를 항상 대문자로 작성해야 합니다.
#type(x)는 x의 자료형을 확인하는 파이썬의 내장 함수이다. a = True b = False print(f'{type(a)}, {type(b)}') 출력: <class 'bool'>, <class 'bool'> #1과 1이 같은가?’를 묻는 조건문이다. #이런 조건문은 결과로 True 또는 False에 해당하는 불 자료형을 리턴한다. #1과 1은 같으므로 True를 리턴합니다. print(1 == 1) 출려기 True a = [1,2,3,4] while a: print(a.pop()) #a가 참인 경우, a.pop()를 계속 실행하여 출력하라는 의미이다. #a.pop() 함수는 리스트 a의 마지막 요소를 끄집어 내는 함수이므로 #리스트 안에 요소가 존재하는 한(a가 참인 동안) 마지막 요소를 계속 끄집어 낼 것이다. #결국 더 이상 끄집어 낼 것이 없으면 a가 빈 리스트([])가 되어 거짓이 된다. #따라서 while 문에서 조건문이 거짓이 되므로 while 문을 빠져나가게 된다. 출력: 4 3 2 1 if []: print('참') else: print('거짓') #비어 있는 리스트이므로 거짓이다. 따라서 "거짓"이라는 문자열이 출력된다. #고로 []안에 값을 넣으면 참이 된다. 출력: 거짓 #불 연산 - bool() 함수를 사용하면 자료형의 참과 거짓을 보다 정확하게 식별할 수 있다. print(bool('python')) 출력: True print(bool("")) 출력: False print(bool(0)) 출력: False
자료형의 참과 거짓
값 참 or 거짓 'python' 참 "" 거짓 [1,2,3] 참 [] 거짓 (1,2,3) 참 () 거짓 {'a':1} 참 {} 거짓 1 참 0 거짓 None 거짓 문자열, 리스트, 튜플, 딕셔너리 등의 값이 비어 있으면("", [], (), {}) 거짓이 되고 비어 있지 않으면 참이 되며, 숫자에서는 그 값이 0일 때 거짓이 됩니다.
자료형의 값을 저장하는 공간, 변수
변수는 객체를 가리키는 것이라고도 말할 수 있으며, 객체란 우리가 지금까지 보아 온 자료형의 데이터(값)와 같은 것을 의미하는 말입니다.
a = [1,2,3] b = a #id(a)의 값이 id(b)의 값과 동일하다는 것을 확인할 수 있습니다. #즉, a가 가리키는 대상과 b가 가리키는 대상이 동일하다는 것을 알 수 있습니다. print(id(a)) print(id(b)) 출력: 2418053698752 2418053698752 a is b # 동일한 객체를 가리키고 있는지에 대해서 판단하는 파이썬 명령어 is #만약 a에 있는 값을 하나 바꾸면 b도 바뀐다 a[1] = 4 print(a) print(b) 출력: [1, 4, 3] [1, 4, 3] #그렇다면 b 변수를 생성할 때 a 변수의 값을 가져오면서 a와는 다른 주소를 가리키도록 만들 수 있습니다. #[:] 이용하기 a = [3,4,5] b = a[:] a[1] = 6 print(a) print(b) #a 리스트 값을 바꾸더라도 b 리스트에는 아무런 영향이 없다. 출력: [3, 6, 5] [3, 4, 5] #copy 모듈 이용하기 from copy import copy b = copy(a) #[:]랑 같다 b = a.copy() a = [1, 2, 3] b = a.copy() b is a 출력: True #변수를 만드는 여러 가지 방법 a, b = ('python', 'life') #참고로 (a, b) = 'python', 'life'와 같다 = 튜플 print(a) #참고로 print(a[1]) y 출력 처럼 따로 부를 수 있다. print(b) 출력: python life #리스트로 변수를 만들 수 있습니다. [a, b] = ['python', 'life'] print(a) #참고로 print(a[0]) p 출력 처럼 따로 부를 수 있다. print(b) 출력: python life a = 3 b = 2 a, b = b, a print(a) print(b) #이렇게 값을 바꿀 수 있다. 출력: 2 # 바뀐 a 3 # 바뀐 b
여기까지