딕셔너리란?
파이썬에서는 Hash 구조를 지원하는데 이 자료형이 딕셔너리(Dictionary)다
이는 Key와 Value를 한 쌍으로 갖는 자료형이다
딕셔너리는 리스트나 튜플처럼 순차적으로 요소값을 구하지 않고 Key를 통해 Value를 얻는다
딕셔너리 구조
딕셔너리의 기본 구조는 {Key1:Value1, Key2:Value2, Key3:Value3 ...} 로 구현된다
아래는 딕셔너리의 예시 구조이다
dic = {'name':'pey', 'phone':'01005065818', 'birth':'0102'}
딕셔너리 쌍 추가
key가 정수면 아래처럼 추가 가능
dic = {1:'a'}
dic[2] = 'b' #{2:'b'}쌍 추가
print(dic) #{1: 'a', 2: 'b'}
key가 string이면 아래처럼 추가
a['name'] = 'pey' #{'name':'pey'}쌍 추가
value가 배열이면 아래처럼 추가
a[3] = [1,2,3] #{3:[1,2,3]}쌍 추가
딕셔너리 요소 삭제
del 함수를 사용해서 해당하는 key의 {Key:Value}쌍을 삭제할 수 있다
del a[1] #key가 1인 {key:value}쌍 삭제
del a['name'] #key가 'name'인 쌍 삭제
딕셔너리에서 Key 사용해서 Value 얻기
'딕셔너리 변수 이름[Key]를 통해 해당하는 key의 value를 얻을 수 있다
grade = {'pey':10, 'jully':99}
grade['pey'] #10
grade['jully'] #99
딕셔너리 만들 때 주의사항
딕셔너리에서 Key는 고유한 값이므로 중복되는 Key값을 설정하면 하나를 제외한 나머지 것들이 모두 무시된다!
즉, Key에 중복되어 저장된 Value가 있으면 그 중 하나의 쌍만 보여지는 것이다
a={1:'a', 1:'b'} #key=1 값이 중복!
print(a) #{1:'b'}만 출력되고 1:'a'쌍은 무시된다
딕셔너리 관련 함수
1. Key 리스트 만들기
keys() 함수 사용
a = {'name':'pey', 'phone':'01000000000', 'birth':'0102'}
for k in a.keys():
print(k)
#결과
name
phone
birth
keys()함수는 딕셔너리의 key만 모아서 dict_keys 객체로 돌려주고, 이는 위처럼 사용 가능하다
2. Value 리스트 만들기
values() 함수 사용
a = {'name':'pey', 'phone':'01000000000', 'birth':'0102'}
for k in a.values():
print(k)
#결과
pey
01000000000
0102
values()함수 또한 dict_values 객체를 반환한다
3. Key, Value 쌍 얻기(items)
items() 함수 -> dict_items 객체 반환
a = {'name':'pey', 'phone':'01000000000', 'birth':'0102'}
a.items()
#result
dict_items([('name':'pey'), ('phone':'01000000000'), ('birth':'0102')])
4. Key:Value 쌍 모두 지우기 (clear)
clear 함수는 딕셔너리 안의 모든 요소를 삭제한다
a.clear
a #{}, 빈 딕셔너리
참고) 빈 딕셔너리는 a = {} 또는 a = dict() 로 생성 가능하다
5. Key로 Value 얻기(get)
get(x) 함수는 x라는 Key에 대응되는 Value를 돌려준다
a.get('name') # 'pey'
a.get('birth') # '0102'
6. 해당 Key가 딕셔너리 안에 있는지 조사하기(in)
a = {'name':'pey', 'phone':'01000000000', 'birth':'0102'}
'name' in a #True
'hello' in a #False
후기) 파이썬 역시 쉽고 졸려,, 잘래,,
'야미스터디 > Etc' 카테고리의 다른 글
[C++ STL] priority_queue (우선순위 큐) (0) | 2022.01.03 |
---|---|
01장 파이썬이란 무엇인가? (0) | 2021.12.26 |
[C++ STL] map iterator(반복자) (0) | 2021.12.24 |
[C++ STL] Map 자료구조 (0) | 2021.12.24 |
[TOEIC] 토익 공부 길잡이 - RC, LC 문제풀이법 (0) | 2021.06.28 |
댓글