본문 바로가기
야미스터디/Etc

[파이썬] 딕셔너리 자료형

by 의정부핵꿀밤 2021. 12. 24.
728x90

딕셔너리란?

파이썬에서는 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

 

 


후기) 파이썬 역시 쉽고 졸려,, 잘래,,

728x90

댓글