추가
- 딕셔너리는 키-값 쌍의 형태를 지닌 자료구조이다.
- 먼저 딕셔너리에서 가장 중요한 메서드 2개는 다음과 같다.
- setdefault : 키-값 쌍 추가(수정은 불가)
- update : 키-값 수정/추가(괄호 안에 들어가는 건 키가 문자열일때만 가능, 아닐 때는 전체 딕셔너리를 넣어야 함)
# setdefault 메서드 -> 새로운 키-값 추가
x = {'a' : 10, 'b' : 20, 'c' : 30, 'd' : 40}
x.setdefault('e') # 키만 추가
print(x) # {'a': 10, 'b': 20, 'c': 30, 'd': 40, 'e': None}
x.setdefault('f', 100) # 키와 값 추가
print(x) # {'a': 10, 'b': 20, 'c': 30, 'd': 40, 'e': None, 'f': 100}
# update 메서드 -> 기존의 값 수정, 없으면 키-값 쌍 추가.
x = {'a' : 10, 'b' : 20, 'c' : 30, 'd' : 40}
x.update(a = 90) # 키 a의 값을 90으로 변경
print(x) # {'a': 90, 'b': 20, 'c': 30, 'd': 40}
x.update(e = 90) # 없으면 키-값 추가
print(x) # {'a': 90, 'b': 20, 'c': 30, 'd': 40, 'e': 90}
x.update(a = 900, f = 60) # 여러 개를 한 번에 수정/추가할 수도 있음.
print(x) # {'a': 900, 'b': 20, 'c': 30, 'd': 40, 'e': 90, 'f': 60}
- 여기서 주의할 점은, setdefault 메서드로는 수정이 불가능하며, update 메서드는 키의 형식이 문자열일 때만 괄호 안에 넣을 수 있다는 것이다. (그래서 괄호 안에 넣을 때 작은따옴표를 붙이지 않음.)
- 그래서 만약 키의 형식이 문자열이 아니라면, 다음과 같은 방법을 사용해야 한다.
# 1. 괄호 안에 딕셔너리를 넣기
y = {1 : 'one', 2 : 'two'}
y.update({1 : 'ONE', 3 : 'THREE'}) # 이처럼 딕셔너리를 update 메서드 안에 직접 넣는다.
print(y) # {1: 'ONE', 2: 'two', 3: 'THREE'}
# 2. 리스트와 튜플 이용하기
# 리스트 -> [[key1, val1], [key2, val2]] 형식으로 [[키, 값], [키, 값]] 처럼 넣어줌.
# 튜플도 마찬가지이다.
y = {1 : 'one', 2 : 'two'}
y.update([[2 , 'TWO'], [4, 'FOUR']])
print(y) # {1: 'one', 2: 'TWO', 4: 'FOUR'}
# 3. zip 객체와 같이 키-값 쌍으로 된 반복 가능한 객체
y = {1 : 'one', 2 : 'two'}
y.update(zip([1, 2], ['ONE', 'TWO']))
print(y) # {1: 'ONE', 2: 'TWO'}
삭제
- 딕셔너리에서 키-값 쌍을 삭제하는 메서드는 다음 종류가 있다.
- pop 메서드 : 딕셔너리_이름.pop(키) 형태로 사용, 특정 키-값 쌍을 삭제한 뒤 그 값을 반환함.
- del 메서드 : del 딕셔너리_이름[키] 형태로 사용, 딕셔너리의 특정 키-값을 삭제함.
- popitem() 메서드 : 임의의 키-값 쌍을 삭제, 그 키-값 쌍을 반환함. pop메서드는 값만을 반환하지만 이 메서드는 키-값쌍을 튜플로 반환함.
- clear() 메서드 : 딕셔너리의 모든 키-값 쌍을 삭제함.
# pop 메서드
x = {'one' : 1, 'two' : 2, 'three' : 3}
x.pop('one') # 1
print(x) # {'two': 2, 'three': 3}
- ** 만약 내가 없애고자 한 키가 그 딕셔너리에 없을 경우, 오류가 난다. (리스트에서 범위 밖의 인덱스를 지정한 것과 비슷한 맥락으로 이해하면 될 것 같다)
- 이때 pop 메서드 안에 기본값을 지정해 주면 키가 없을 경우 기본값을 반환한다.
# del 메서드
x = {'one' : 1, 'two' : 2, 'three' : 3}
del x['one']
print(x) # {'two': 2, 'three': 3}
- 또한 마찬가지로 del도 존재하지 않는 키를 입력하면 오류가 난다.
가져오기
- get() 메서드 : 딕셔너리에서 특정 키의 값을 가져온다.
- items() 메서드 : 딕셔너리의 키-값 쌍을 '모두' 가져온다.
- keys() 메서드 : 딕셔너리의 키를 '모두' 가져온다.
- values() 메서드 : 딕셔너리의 값을 '모두' 가져온다.
- items, keys, values 메서드는 for 반복문과 조합해서 사용한다고 한다.
# get 메서드
x = {'one' : 1, 'two' : 2, 'three' : 3}
x.get('one') # 1
# 이렇게 할 수도 있다.
x['one'] # 1
- 여기서도 pop메서드처럼 기본값을 설정하면, 만약 키가 없을 경우 기본값을 반환한다.
# items 메서드
x = {'one' : 1, 'two' : 2, 'three' : 3, 'four' : 4}
x.items() # dict_items([('one', 1), ('two', 2), ('three', 3), ('four', 4)])
# keys 메서드
x.keys() # dict_keys(['one', 'two', 'three', 'four'])
# values 메서드
x.values() # dict_values([1, 2, 3, 4])
- 혹시나 해서 각 메서드들의 반환값의 표현형을 type() 메서드를 이용해 봤는데 다음과 같다.
만들기
- 리스트/튜플로도 딕셔너리를 만들 수 있다.
- dict.fromkeys() 메서드를 이용해 키 리스트로 딕셔너리를 만들 수 있다.
- 이때, 값을 지정하지 않으면 값은 모두 None이 된다.
# 리스트로 딕셔너리 만들기
keys = ['one', 'two', 'three', 'four']
x = dict.fromkeys(keys)
print(x) # {'one': None, 'two': None, 'three': None, 'four': None}
# 값을 지정했을 때
x = dict.fromkeys(keys, 100)
print(x) # {'one': 100, 'two': 100, 'three': 100, 'four': 100}
반복문 이용하기
- for 반복문 이용하기
# 모든 키 출력하기
x = {'one' : 1, 'two' : 2, 'three' : 3, 'four' : 4}
for i in x:
print(i, end = ' ')
# one two three four , 키만 출력됨.
# 키와 값 모두 출력하기
for key, value in x.items():
print(key, value)
# one 1
# two 2
# three 3
# four 4
# 같은 방법으로, 키만 출력하기
for key in x.keys():
print(key, end = ' ') # one two three four
# 값만 출력하기
for value in x.values():
print(value, end = ' ') # 1 2 3 4
딕셔너리 표현식
- 이 부분은 아직 이해가 필요해 이후에 추가하도록 하겠다.
'Programming Language > Python 공부' 카테고리의 다른 글
[Pylearn] 1213 / 문자열 응용하기 (0) | 2021.12.13 |
---|---|
[Python] 1210 / file 입출력, 클래스 #1 (0) | 2021.12.10 |
[Python] 1205 List Comprehension(리스트 표현식) 및 문자열, 백준 2869번 (0) | 2021.12.06 |
[Python] 1202 (0) | 2021.12.02 |
[Python] 1201 공부한 점들 (0) | 2021.12.01 |