티스토리 뷰
📌 {딕셔너리}
연관성이 없는 값을 일렬로 늘어놓은 형태인 리스트, 튜플과 다르게 딕셔너리는 행과 열을 가지며 값 사이에 연관성이 존재한다. 데이터(value)마다 이름(key)을 붙여서 저장하는 방식을 사용한다. key와 value를 한 쌍으로 묶어 요소 하나로 본다.
📍 데이터 형에 상관없이 여러 값을 저장할 수 있다 = 모든 객체의 시퀀스.
📍 key(불변)와 value(가변)가 한 쌍을 이루어 딕셔너리의 요소 하나가 된다.
📍 key는 문자열뿐만 아니라 정수, 실수, 불도 사용할 수 있다. 하나의 데이터형으로 통일할 필요는 없다.
📍 단, key에 리스트와 딕셔너리를 사용할 수 없다. key는 불변 값이므로 튜플만 가능하다.
📍 key를 사용한 탐색이 가능하므로 탐색에 용이하다.
📍 2차원 배열의 형태를 가진다.
📍 첨자를 사용해 리스트에 저장된 값에 접근할 수 있다 (리스트 길이보다 큰 index를 사용하려고 하면 에러 발생)
👉 딕셔너리 만들기 (딕셔너리 패킹)
1. 중괄호 사용하기
student = { 'class' : '20', 'name': '짱구', 'age': 5, 'class' : '해바라기반' }
print(student)
print(student['class'])
✔ {딕셔너리}에 값을 저장할 때에는 중괄호로 묶어준다.
✔ 만약 중복 key가 있다면 나중에 선언된 key-value를 사용할 수 있고, index는 첫 번째 선언된 위치를 사용한다.
✔ 중복 key가 있다면 이래저래 헷갈리니까 key 이름을 지어줄 때에 중복되지 않도록 주의하자.
student = { 'name': '짱구', 'age': 5, 'class' : '해바라기반' }
student['name'] = '치타'
student['age'] = 6
student['class'] = '장미반'
student['teacher'] = '나미리선생님'
print(student)
✔ 첨자를 사용해서 요소에 접근하고, 만약 없는 key값을 사용하면 딕셔너리에 요소가 추가된다.
2. 형변환을 위한 dict() 사용하기
1. 딕셔너리 = dict(키1=값1, 키2=값2)
2. 딕셔너리 = dict(zip([키1, 키2], [값1, 값2]))
3. 딕셔너리 = dict([(키1, 값1), (키2, 값2)])
4. 딕셔너리 = dict({키1: 값1, 키2: 값2})
✔ 형변환을 위한 dict()를 사용해서 딕셔너리를 만들 수 있다. 하나하나 살펴보자.
# 1. 딕셔너리 = dict(키1=값1, 키2=값2)
dic = dict(name='짱구', age=5)
✔ key = value 형식으로 딕셔너리를 만들 수 있다.
✔ 이 때에는 key값에 따옴표를 사용하지 않아야 하며, 무조건 문자열로 변환된다.
# 2. 딕셔너리 = dict(zip([키1, 키2], [값1, 값2]))
dic = dict( zip( ['name', 'age'], ['짱구', 5] ) )
k = ('name', 'age')
v = ['짱구', 5]
dic = dict( zip(k,v) )
✔ zip() 을 활용해서 만들 수 있다.
✔ zip은 인자로 key값을 요소로 가지는 리스트와, value값을 요소로 가지는 리스트를 받는다.
✔ 리스트가 아닌 튜플을 인자로 넣어도 정상 작동한다.
✔ 만약 key을 요소로 가지는 리스트나 튜플만을 넣어 인수를 하나만 사용하면 오류 발생한다.
# 3. 딕셔너리 = dict([(키1, 값1), (키2, 값2)])
k = ('name', 'age')
v = ['짱구', 5]
dic1 = dict( [ k,v ] )
dic2 = dict( ( k,v ) )
✔ zip() 대신 리스트나 튜플로 묶어서 딕셔너리를 만들 수도 있다.
# 4. 딕셔너리 = dict({키1: 값1, 키2: 값2})
dic = dict( { 'name':'짱구', 'age':5 } )
✔ 마지막으로 dict 내부에서 중괄호를 사용해 딕셔너리를 생성하는 방법이다.
✔ 이럴 바에는 그냥 딕셔너리 만드는게 낫겠다 싶은 생각이 든다 🤔
3. 빈 딕셔너리 만들기
dic1 = {}
dic2 = dict()
✔ 중괄호를 비우거나, 형변환을 돕는 dict()을 사용해서 빈 딕셔너리를 만들 수 있다.
👉 딕셔너리 언패킹 (추가 예정)
#딕셔너리 언패킹
👉 딕셔너리를 조작하는 메서드
메서드 | 설명 | |
추가 | .setdefault(k) |
딕셔너리에 key-value 를 추가 key만 지정하면, value에 NONE 이 저장. |
추가/수정 | .update(k=v) | key 값 수정, key가 없다면 key-value 추가. 요소 여러개를 한번에 수정/추가할 수 있다. |
삭제 | .pop(k) | 특정 요소를 삭제하고, 삭제한 value를 반환 저장되어 있지 않은 key값이라면 error |
del 딕셔너리['k'] | 해당하는 key 삭제 | |
.popitem() | 파이썬 3.6이상 : 마지막 요소를 삭제 파이썬 3.5이하 : 임의로 요소 하나를 선택해서 삭제 |
|
.clear() | 딕셔너리의 모든 요소 삭제 | |
검색 | .get(k) | 딕셔너리의 특정 key값을 사용해 value를 가져온다 |
.items() | 딕셔너리의 모든 key-value를 가져온다 | |
.keys() | 딕셔너리의 모든 key를 가져온다 | |
.values() | 딕셔너리의 모든 value를 가져온다 | |
정렬 |
sorted(딕셔너리) | 딕셔너리 요소가 인수를 기준으로 정렬 (오름차순) 요소를 오름차순으로 정렬 (정렬된 새로운 리스트를 반환) |
길이 | len(리스트) | 길이 (요소의 개수) 구하기 딕셔너리의 요소는 key-value 한 쌍을 의미 |
👉 딕셔너리 : 추가 메서드
1. setdefault()
dic = { 'one':1 , 'two':2 , 'three':3 }
#1. dic 출력
print('1. ',dic)
#2. 요소 추가 후 dic 출력
dic.setdefault('four')
print('2. ',dic)
✔ setdefulat()의 인수로 key값을 넣어주면 None으로 자동 할당되어 요소가 추가된다.
2. update()
dic = { 'one':1 , 'two':2 , 'three':3 }
#1. dic 출력
print('1. ',dic)
#2. 요소 수정 후 dic 출력
dic.update(one='1')
print('2. ',dic)
#3. 요소 수정 후 dic 출력
dic.update(four= 4)
print('3. ',dic)
✔ update의 인수로 key값을 사용할 때에는 문자열이어도 따옴표가 필요하지 않다.
✔ 딕셔너리에 key값이 있다면 value를 수정하고, 없다면 새롭게 추가한다.
👉 딕셔너리 : 삭제 메서드
1. pop()
# 1. dic 출력
dic = { 'one':1 , 'two':2 , 'three':3 }
print('1. ',dic)
# 2. dic.pop()의 결과 : error
# dic.pop()
# print('2. ',dic)
print('2. error')
# 3. dic.pop(key)의 결과 : key값을 찾아 삭제
dic.pop('one')
print('3. ',dic)
✔ pop() 은 특정 key를 지정해 삭제한다
2. del 리스트['key']
# 1. dic 출력
dic = { 'one':1 , 'two':2 , 'three':3 }
print('1. ',dic)
# 2. del dic['two']의 결과
del dic['two']
print('2. ',dic)
✔ 내장 함수 del 역시 특정 key를 지정해 삭제한다
3. popitem()
# 1. dic 출력
dic = { 'one':1 , 'two':2 , 'three':3 }
print('1. ',dic)
# 2. dic.popitem() 의 결과
dic.popitem()
print('2. ',dic)
✔ 파이썬 3.6이상 : 마지막 요소를 삭제한다
✔ 파이썬 3.5이하 : 임의로 요소 하나를 선택해서 삭제한다
4. clear()
# 1. dic 출력
dic = { 'one':1 , 'two':2 , 'three':3 }
print('1. ',dic)
# 2. dic.clear() 의 결과
dic.clear()
print('2. ',dic)
✔ 딕셔너리 내부의 모든 요소를 삭제한다.
👉 딕셔너리 : 검색 메서드
1. get()
# 1. dic 출력
dic = { 'one':1 , 'two':2 , 'three':3 }
print('1. ',dic)
# 2. dic.get('one') 결과 출력
print('2. ',dic.get('one'))
# 3. dic.get('four') 결과 출력
print('3. ',dic.get('four'))
✔ get() 메서드는 key값에 해당하는 value를 반환한다.
✔ 딕셔너리가 가지지 않은 key값을 사용하면 None을 반환한다.
2. items() , keys(), values()
# 1. dic 출력
dic = { 'one':1 , 'two':2 , 'three':3 }
print('1. ',dic)
# 2. dic.items() 결과 출력
print('2. ',dic.items())
# 3. dic.keys() 결과 출력
print('3. ',dic.keys())
# 4. dic.values() 결과 출력
print('4. ',dic.values())
✔ items() 는 딕셔너리의 모든 key-value를 가져온다.
✔ keys()는 딕셔너리의 모든 key를, values()는 모든 value를 가져온다.
👉 딕셔너리 : 정렬 메서드
1. sorted()
dic = {'b':3, 'a':2, 'c':1}
print('>',dic)
sorted_dic2 = sorted(dic)
print('> 딕셔너리명\t\t\t\t: ',sorted_dic2)
sorted_items = sorted(dic.items())
print('> 딕셔너리.items()\t\t\t: ',sorted_items)
sorted_items = sorted(dic.items(), reverse=True)
print('> 딕셔너리.items() + (reversee=True)\t: ',sorted_items)
sorted_values = sorted(dic.values())
print('> 딕셔너리.values()\t\t\t: ',sorted_values)
sorted_keys = sorted(dic.keys())
print('> 딕셔너리.keys()\t\t\t: ',sorted_keys)
✔ 내장 함수 sorted 는 정렬을 한 뒤, 새로운 딕셔너리를 생성한다. 저장하지 않으면 사용할 수 없다.
✔ 딕셔너리에 sorted를 사용하면 요소가 정렬된 리스트를 반환한다.
✔ 리스트를 다시 딕셔너리로 형변환하는 방법은 따로 다룰 예정.
👉 딕셔너리 : key가 있는 지 확인하기
1. key in 딕셔너리
# 1. dic 출력
dic = { 'one':1 , 'two':2 , 'three':3 }
print('1. ',dic)
# 2. 'one' in dic 결과 출력
print('2. ','one' in dic)
# 3. 'four' in dic 결과 출력
print('3. ','four' in dic)
✔ 딕셔너리가 가지고 있는 key값이라면 True를 반환하고, 아니라면 False를 반환한다.
# 1. dic 출력
dic = { 'one':1 , 'two':2 , 'three':3 }
print('1. ',dic)
# 2. 'one' not in dic 결과 출력
print('2. ','one' not in dic)
# 3. 'four' not in dic 결과 출력
print('3. ','four' not in dic)
✔ in 앞에 not을 붙이면 특정 key가 없는지 확인할 수 있다.
👉 리스트 : 반복문에서 사용하기
num = {1:'one', 2:'two', 3:'three', 4:'four'}
print(num)
#key를 사용
for key in num.keys() :
print('key : {0} → value : {1}'.format(key,num[key]))
#value를 사용
print()
for value in num.values() :
print('value : {}'.format(value))
#key-value를 사용
print()
for key, value in num.items() :
print('key : {0} → value : {1}'.format(key,value))
[참고] 엘리스 트랙-혼자 공부하는 파이썬 / 길벗-파이썬 코딩 도장 / 엘리스 트랙 - 예제 중심의 파이썬 입문 / 위키백과
'BackEnd > Python' 카테고리의 다른 글
[파이썬 기초] 03-1. 내장 함수 정리 (0) | 2021.03.21 |
---|---|
[파이썬 기초] 02-4. 시퀀스 자료형 (0) | 2021.03.18 |
[파이썬 기초] 02-2. (튜플) (0) | 2021.03.18 |
[파이썬 기초] 02-1. [리스트] (0) | 2021.03.16 |
[파이썬 기초] 01-5. 조건문 / 반복문 (0) | 2021.03.16 |