(4주차) 3월23일
딕셔너리(연산, 메소드), 딕셔너리 고급, 집합(선언, 원소추가, 원소삭제, 연산, 메소드, for문)
-
(1/4) 딕셔너리 연산, 메소드
-
(2/4) 딕셔너리 연산, 메소드 (2)
-
(3/4) 딕셔너리 고급
-
(4/4) 집합
-
하나있어요..
score = {'guebin':49, 'iu':80}
score
'guebin' in score
'iu' in score
'hynn' in score
-
in은 사실 다른자료형도 가능했음
(관찰1)
'a' in 'guebin'
'b' in 'guebin'
'c' in 'guebin'
(관찰2)
tpl = 1,2,3
tpl
1 in tpl
4 in tpl
(관찰3)
score = [['guebin',49],['iu',80],['hynn',99]]
score
['guebin',49] in score
-
in연산자가 dict형에 사용되면 key를 기준으로 True, False를 판단한다.
(get)
score = {'guebin':49, 'iu':80}
score
score.get('guebin')
아래와 같은 기능
score['guebin']
미묘한 차이점이 존재함
score['hynn'] # hynn이 없어서 키에러 출력, 그런 key는 없다..
score.get('hynn') # hynn이 없으면 아무것도 출력안함
(keys,values,items)
-
.keys()는 딕셔너리의 키를 리턴한다.
score = {'guebin':49, 'iu':80}
score
_keys=score.keys()
_keys
type(_keys) # 리턴된 자료형은 이상한것임
list(_keys) # 아무튼 그 이상한 자료형도 리스트화 가능
-
.values()는 딕셔너리의 값들을 리턴한다.
_values =score.values()
_values
type(_values)
list(_values)
-
.items()는 딕셔너리의 (키,값)을 리턴한다.
_items = score.items()
_items
type(_items)
list(_items)
-
for문에서의 dict
(예시1)
for i in score.keys():
print(i)
for i in score:
print(i)
- 딕셔너리 그자체도 for문에 넣을 수 있다.
- i에는 value가 삭제되어 들어간다. (즉 key만)
- 결과를 보면 score대신에 score.keys()와 list(score)를 넣었을때와 결과가 같다.
Note: list(score) 하면 key만 리턴된다.
(예시2)
for i in score.values():
print(i)
(예시3)
for k in score.items():
print(k)
(예시4)
for i,j in score.items():
print(i,j)
(예시5)
for i,j in score.items():
print(i + '의 중간고사 점수는 %s점 입니다.' % j)
[보충학습] 문자열 새치기
'제 이름은 %s입니다' % '최규빈'
- %는 새치기연산자임. %s는 새치기하는 자리라고 생각
보충학습끝
-
정수키
score = {0:49, 1:80, 2:99} # key를 0,1,2로
score
-
인덱싱은?
score[0] # 키로 인덱싱을 하고 있는데 마치 원소의 위치로 인덱싱을 하는 기분
-
그럼 혹시 이것도?
score[:2]
score[-1] # 이것도 될리가 없죠..
score = {('guebin',0): 10, ('guebin',1): 20, ('guebin',2):49} # 0은 출석점수, 1은 레포트 점수, 2는 중간고사 점수
score
score[('guebin',0)]
score['guebin',2]
score[('guebin',3)] = 99 # 규빈의 기말고사 점수를 추가
score
- 문자열, 숫자값, 튜플의 공통점? 불변객체
(인트형은 불변)
a=1
a,id(a)
a=2
a,id(a)
(문자열도 불변)
a='guebin'
a,id(a)
a='Guebin'
a,id(a)
(리스트는 가변)
a=list('guebin')
a,id(a)
a[0]='G'
a,id(a)
a={'notebook','desktop'}
-
일단 인덱스로는 못합니다.
a={'notebook','desktop'}
a[0]
-
딱히 하는 방법이 없어요.. 그리고 이걸 하는 의미가 없어요.. (원소에 접근해서 뭐하려고??)
-
이건 의미가 있죠
a={'notebook','desktop'}
a
a.add('ipad')
a
a.add('notebook') # 이미 원소로 있는건 추가되지 않음.
a
a={'desktop', 'ipad', 'notebook'}
a
a.remove('notebook')
a
-
in 연산자
a={'desktop', 'ipad', 'notebook'}
a
'notebook' in a
- 참고로
in
연산자는 집합에서만 쓰는것은 아님
-
합집합, 교집합, 차집합
day1 = {'notebook','desktop'}
day2 = {'notebook','ipad'}
day1 | day2 # 합집합
day1 & day2 # 교집합
day1 - day2 # 차집합
day2 - day1 # 차집합
-
부분집합
day1 = {'notebook', 'desktop'}
day2 = day1 | {'ipad'}
day1 < day2 # day1는 day2의 부분집합인가?
day2 < day1
-
합집합
day1 = {'notebook', 'desktop'}
day2 = {'notebook','ipad'}
day1.union(day2)
-
나머지 메소드는 스스로 찾아보세요
day1 = {'notebook', 'desktop'}
day2 = {'notebook','ipad'}
for i in day1|day2:
print(i)
길이가 4인 집합을 두개만들고 공통원소를 2개로 설정한뒤 합집합을 구하는 코드를 작성하라.