강의 홍보

I. 개요
- 이번 시간부터 본격적으로 파이썬의 기초 자료형에 대해 간단한 튜토리얼을 준비했다.
- 데이터 분석과는 큰 관계가 없을 수 있지만, 데이터 정제 할 때, 도움이 되기도 한다.
- 그 중에서 면접의 단골질문과 같은
Dictionary에 대해 나누는 시간을 가졌다.
II. Dictionary의 기본적인 특징
Dictionary는 영어 원뜻 그대로 사전을 생각하면 된다.
Dictionary는 List와 유사한 부분이 많다.
List와 같이 Mutable이라는 뜻을 포함한다.
List와 같이 다른 Dictionary, list 등을 포함시킬 수 있다.
- 차이점은 원소에 대한 접근방법의 차이다.
List에서 각 원소에 대한 접근법은 index을 활용한다.
Dictionary에서 각 원소에 대한 접근법은 keys에 의해 접근한다.
III. Dictionary 정의
- 로고사진처럼,
Dictionary는 key-value로 구성 되어 있다.
- Dictionary를 정의하는 방법에는 여러가지가 있다.
(1) 기본 { }를 활용한 방법
d = {
<키>: <값>,
<키>: <값>,
.
.
.
<키>: <값>,
}
- 간단하게 국내 야구팀을
Dictionary 형태로 만들어보자.
KOR_team1 = {
"인천" : "SK",
"서울1" : "LG",
"서울2" : "두산",
"창원" : "NC",
"광주" : "기아",
"대구" : "삼성",
"대전" : "한화",
"부산" : "롯데",
"수원" : "KT",
"고척" : "키움",
}
KOR_team1
{'고척': '키움',
'광주': '기아',
'대구': '삼성',
'대전': '한화',
'부산': '롯데',
'서울1': 'LG',
'서울2': '두산',
'수원': 'KT',
'인천': 'SK',
'창원': 'NC'}
(2) 내장함수 dict()를 활용하는 방법
key-value를 활용하는데, 이 때 tuple 형태로 작성한다.
d = dict([
(<키>, <값>),
(<키>, <값),
.
.
.
(<키>, <값>)
])
KOR_team2 = dict([
("인천", "SK"),
("서울1", "LG"),
("서울2", "두산"),
("창원", "NC"),
("광주", "기아"),
("대구", "삼성"),
("대전", "한화"),
("부산", "롯데"),
("수원", "KT"),
("고척", "키움")
])
KOR_team2
{'고척': '키움',
'광주': '기아',
'대구': '삼성',
'대전': '한화',
'부산': '롯데',
'서울1': 'LG',
'서울2': '두산',
'수원': 'KT',
'인천': 'SK',
'창원': 'NC'}
(3) dict with spring
dict() 함수 안에 문자열 변수를 입력하는 형태로 코드를 작성한다.
KOR_team3 = dict(
인천 = "SK",
서울1 = "LG",
서울2 = "두산",
창원 = "NC",
광주 = "기아",
대구 = "삼성",
대전 = "한화",
부산 = "롯데",
수원 = "KT",
고척 = "키움"
)
KOR_team3
{'고척': '키움',
'광주': '기아',
'대구': '삼성',
'대전': '한화',
'부산': '롯데',
'서울1': 'LG',
'서울2': '두산',
'수원': 'KT',
'인천': 'SK',
'창원': 'NC'}
- 실제
Dictionary 형태로 정의가 되었는지 확인해본다.
print(type(KOR_team1))
print(type(KOR_team2))
print(type(KOR_team3))
<class 'dict'>
<class 'dict'>
<class 'dict'>
IV. Dictionary 접근법
- Dictionary 원소 접근법은
indexing이 아니라 key값에 의해 결정된다.
print(KOR_team1['인천'])
print(KOR_team1['부산'])
SK
롯데
- 만약에 전주에 새로운 야구팀(현대)이 생겼다고 가정하자.
- 추가하는 소스코드는 아래와 같다.
KOR_team1['전주'] = "현대"
KOR_team1
{'고척': '키움',
'광주': '기아',
'대구': '삼성',
'대전': '한화',
'부산': '롯데',
'서울1': 'LG',
'서울2': '두산',
'수원': 'KT',
'인천': 'SK',
'전주': '현대',
'창원': 'NC'}
전주: 현대가 추가된 것을 확인할 수 있다.
- 이번에는 방금 추가한
전주: 현대를 삭제하도록 하자. (del) 함수 사용
del KOR_team1['전주']
KOR_team1
{'고척': '키움',
'광주': '기아',
'대구': '삼성',
'대전': '한화',
'부산': '롯데',
'서울1': 'LG',
'서울2': '두산',
'수원': 'KT',
'인천': 'SK',
'창원': 'NC'}
V. Dictionary Using Integer
- 이전까지 접근한 것은 문자를 입력해서 접근했다.
Integer로 활용하는 방법은 없을까?
dic = {0: 'a', 1: 'b', 2: 'c', 3: 'd'}
dic
{0: 'a', 1: 'b', 2: 'c', 3: 'd'}
print(dic[0])
print(dic[1])
a
b
- 그러나 주의해야 하는 것은
dic는 list가 아니다.
- 즉,
list에서 할 수 있었던, slicing이나 append를 사용할 수 없다.
dic.append('e')
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-20-8bfa5988d009> in <module>()
----> 1 dic.append('e')
AttributeError: 'dict' object has no attribute 'append'
AttributeError: 'dict' object has no attribute 'append' 이 뜻이 함의하는 것은 dictionary에는 append라는 속성값이 없다는 뜻이다.
dic[0:2]
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-21-82c17d59c309> in <module>()
----> 1 dic[0:2]
TypeError: unhashable type: 'slice'
- 마찬가지로
list에서 작동했던 slice는 여기에서는 존재하지 않는다.
VI. Dictionary와 관련된 여러 함수 소개
- Dictionary와 함께 사용되면 좋은 함수들을 간단하게 소개 한다.
(1) d.clear()
dic = {'A': 1, 'B': 2, 'C': 3}
dic
{'A': 1, 'B': 2, 'C': 3}
- clear() 함수 적용 뒤 결과값을 확인해보자.
dic.clear()
dic
{}
- 결과값을 확인해보니 모두 삭제된 것을 확인할 수 있다.
(2) d.get()
get()함수는 key값을 활용해서 value값을 가져오는 함수다.
- 소스코드를 통해 확인하자.
dic = {'A': 1, 'B': 2, 'C': 3}
print(dic.get('B'))
print(dic.get('Z'))
2
None
.get('B')에 해당하는 Dictionary값이 존재하기 때문에 2를 반환한다.
.get('Z')에 해당하는 Dictionary값이 존재하지 않기 때문에 None을 반환한다.
- 그런데
None을 반환하기 보다 특정 숫자 또는 문자로 출력하고 싶다면 다음과 같이 입력하면 된다.
print(dic.get('z', 0))
print(dic.get('z', "없음"))
0
없음
(3) d.keys()
Dictionary는 key와 value로 구성되어 있는데, keys()의 뜻은 현재 구성되어 있는 Dictionary에서 keys()를 dict_keys 형태로 반환한다.
- 이 때,
list로 변환을 하려면 list()를 활용하면 된다.
dic = {'A': 1, 'B': 2, 'C': 3}
print(dic.keys())
print(list(dic.keys()))
dict_keys(['A', 'B', 'C'])
['A', 'B', 'C']
(4) d.values()
keys()를 활용하여 key를 반환했던 것처럼, values()를 활용하여 value를 진행하자.
- 코드는 위와 동일하다. 다만, 함수만 바꾼다.
dic = {'A': 1, 'B': 2, 'C': 3}
print(dic.values())
print(list(dic.values()))
dict_values([1, 2, 3])
[1, 2, 3]
- 그 외에도
pop(), popitem(), update()를 활용법을 익혀본다.
VII. Reference
w3schools. Python Dictionaries. Retrieved June 20, 2020, from https://www.w3schools.com/python/python_dictionaries.asp