본문 바로가기
Python/Python 기초

[Python] 딕셔너리 자료형

by snow_white 2022. 3. 12.

딕셔너리

단어 그대로 해석하면 사전이라는 뜻이다.

리스트나 튜플처럼 순차적으로(sequential) 해당 요솟값을 구하지 않고 Key를 통해 Value를 얻는다.

 

Key와 Value의 쌍 여러 개가 { }로 둘러싸여 있다. 각각의 요소는 Key : Value 형태로 이루어져 있고 쉼표(,)로 구분되어 있다.

※ Key에는 변하지 않는 값을 사용하고, Value에는 변하는 값과 변하지 않는 값 모두 사용할 수 있다.

다음 딕셔너리 예를 살펴보자.

dic = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}

my_dic = dict()
print(type(my_dic)) # <class 'dict'>

위에서 Key는 각각 'name', 'phone', 'birth'이고, 각각의 Key에 해당하는 Value는 'pey', '0119993323', '1118'이 된다.

 

딕셔너리 dic의 정보

key value
name pey
phone 01199993323
birth 1118
a = {1: 'hi'}
a = { 'a': [1,2,3]}

 

데이터 조회하기

딕셔너리는 인덱스로 추출 불가! 따라서 순서가 없는 자료형이다 따라서 sort나 reverse 불가

1) get(key) : 반환형이 있으므로 존재하지 않는 키 None 반환 a.get('name')
2) [key] : 반환형이 없으므로 KeyError!

 

pro_dic = {
    'name':'DRAM',
    'capa':'32g',
    'maker':'SK',
    'price':320000,
}

print(pro_dic.get('ssn')) # None
print(pro_dic['ssn'])     # KeyError: 'ssn'
print(pro_dic.get('name')) # 키 값으로 Value 추출 # DRAM

 

해당 Key가 딕셔너리 안에 있는지 조사하기(in)

a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
'name' in a # True
'email' in a # False

print(not 'price' in pro_dic) # False
print('ssn' not in pro_dic) # True

 

값 추가하기

키값은 숫자, 문자 다 가능

dict['key'] = value

new_dict = {'key':value}
dict.update(new_dict)

# 하나의 값을 추가
pro_dic[1] = 11
print(pro_dic) # {'name': 'DRAM', 'capa': '32g', 'maker': 'SK', 'price': 320000, 1: 11}

# 여러 개의 값을 한 번에 추가하기  update() 사용

add_info = {'loc':'이천', 'pop':33}

pro_dic.update(add_info)

print(pro_dic) # {'name': 'DRAM', 'capa': '32g', 'maker': 'SK', 'price': 320000, 1: 11, 'loc': '이천', 'pop': 33}
 
 

데이터 수정하기

pro_dic['price'] = 230000 # 원래 있는 키라면 수정되고, 없는 키라면 추가됨
 

데이터 삭제하기

del a[key] : Key에 해당하는 {key : value} 쌍이 삭제된다.

pop()

clear() 전부 삭제

remove() 지원 안 됨

del pro_dic[3]
pro_dic # KeyError: 3
result = pro_dic.pop('pop') # KeyError: 'pop' 해당 키 없을 경우 에러!

 

딕셔너리 함수 사용하기

  • keys() 모든 키 값
  • values() 모든 value 값
  • items() 모든 키와 value 쌍

 

Key 리스트 만들기(keys)

a = {'name': 'pey', 'phone': '0119993323', 'birth': '1118'}
a.keys() # dict_keys(['name', 'phone', 'birth']) 
# a.keys()는 딕셔너리 a의 Key만을 모아서 dict_keys 객체를 돌려준다.

for k in a.keys():
	print(k)

# name
# phone
# birth

a.keys()는 딕셔너리 a의 Key만을 모아서 dict_keys 객체를 돌려준다.

 

Value 리스트 만들기(values)

a.values() # dict_values(['pey', '0119993323', '1118'])

Key를 얻는 것과 마찬가지 방법으로 Value만 얻고 싶다면 values 함수를 사용하면 된다. values 함수를 호출하면 dict_values 객체를 돌려준다.

 

Key, Value 쌍 얻기(items)

a.items() # dict_items([('name', 'pey'), ('phone', '0119993323'), ('birth', '1118')])

 

Key: Value 쌍 모두 지우기(clear)

a.clear()
a # {}

 

Key로 Value얻기(get)

a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
a.get('name') # 'pey'
a.get('phone') # '0119993323'

a['nokey']는 Key 오류를 발생시키고 a.get('nokey')는 None을 돌려준다는 차이가 있다.

'Python > Python 기초' 카테고리의 다른 글

[Python] 함수  (0) 2022.03.12
[Python] 집합 자료형  (0) 2022.03.12
[Python] 튜플 자료형  (0) 2022.03.12
[Python] 리스트 자료형  (0) 2022.03.12
[Python] 변수와 데이터 타입 / 객체  (0) 2022.03.12

댓글