카테고리 없음

스파르타 AI-8기 TIL(11/17) -> 처음부터 계속하기

kimjunki-8 2024. 11. 17. 18:28
딕셔너리
사전이란 뜻이며, 딕셔너리는 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

여기까지