본문 바로가기
Python/Python 개념

파이썬 Dictionary의 개념

by hyun-am 2020. 3. 28.

Dictionary

 

Dictionary 개념

 

먼저 Dictionary는 키와 값을 갖는 데이터 구조를 가지고 있습니다.

키는 내부적으로 hash 값으로 저장되어 있으며 순서를 따지지 않습니다. 즉, 인덱스가 없다고 할 수 있습니다.

 

Dictionary 생성 예제

 

a = {'한식': '불고기', 
     '중식': '탕수육', 
     '일식': '스시'}
b = {0:1, 1:6, 7:9, 8:10, 2:3}

print(b[2])
print(a['한식'])

## 출력 값
# 3
# 불고기

 

Dictionary 항목 추가 및 변경 예시

 

기존에 키가 존재하면, 새로운 값으로 업데이트

존재하지 않으면, 새로운 키, 값 생성

 

먼저 한식에 value값을 삼겹살로 바꾸고 양식에 스파게티를 한번 추가해보겠습니다.

 

a = {'한식': '불고기', 
     '중식': '탕수육', 
     '일식': '스시'}
a['한식'] = '삼겹살'
a['양식'] = '스파게티'

print(a)

## 출력 값
# {'한식': '삼겹살', '중식': '탕수육', '일식': '스시', '양식': '스파게티'}

 

기존의 있는 한식의 value가 불고기에서 삼겹살로 바뀐것을 확인 할 수 있고

또한 없던 양식의 key 값과 value값이 생긴것을 확인할 수 있습니다.

 

Dictionary Update( )

 

Dictionary를 서로 병합하고 싶으면 Update( )를 사용합니다

겹쳐지는 키가 있다면 parameter로 전달되는 키 값이 overwrite됩니다.

 

a = {
    'a' : 'apple',
    'b' : 'banana',
    'c' : 'cherry',
}
b = {
    'd' : 'dope',
    'e' : 'egg',
    'f' : 'fake'
}
a.update(b)
print(a)

## 출력 값
# {'a': 'apple', 'b': 'banana', 'c': 'cherry', 'd': 'dope', 'e': 'egg', 'f': 'fake'}

 

Dictionary 에서 key를 삭제하기

 

del 키워드를 이용해 아예 삭제하거나 pop를 이용해 value를 반환한 후 key를 삭제하는 방법이 있습니다.

 

class_name = {
    0 : '자료구조',
    1 : '컴퓨터 공학',
    2 : '알고리즘',
    3 : 'python',
    4 : 'C++',
    5 : '경제학개론',
    6 : '법과 정치'
}
print(class_name)

del class_name[5]
print(class_name)

other_class = class_name.pop(6)
print(other_class)
print(class_name)

## 출력 값

# {0: '자료구조', 1: '컴퓨터 공학', 2: '알고리즘', 3: 'python', 4: 'C++', 5: '경제학개론', 6: '법과 정치'}
# {0: '자료구조', 1: '컴퓨터 공학', 2: '알고리즘', 3: 'python', 4: 'C++', 6: '법과 정치'}
# 법과 정치
# {0: '자료구조', 1: '컴퓨터 공학', 2: '알고리즘', 3: 'python', 4: 'C++'}

 

Dictionary의 모든 값을 초기화 시키기 위한 clear( ) 함수

 

Dictionary의 값들을 모든 값을 초기화 시키기 위해 clear( ) 함수를 이용해 값들을 초기화 시켜줍니다.

예시는 아래와 같습니다.

 

a = { 1:5, 2:10, 3:15, 4:20, 5:25, 6:30}
print(a)
a.clear()
print(a)

## 출력 값
# {1: 5, 2: 10, 3: 15, 4: 20, 5: 25, 6: 30}
# {}

 

key의 값 존재 확인을 위한 in

 

in 연산은 O(1) 연산 이므로 딕셔너리의 크기와 관계 없이 항상 연산 속도가 일정합니다.

 

number = {
    'zero' : 0,
    'one' : 1,
    'two' : 2,
    'three' : 3
}
number_list = [1,2,3,4,5,6,7,100,200,300]
print(number)

print('two' in number)
print(360 in number_list)

## 출력 값 
# {'zero': 0, 'one': 1, 'two': 2, 'three': 3}
# True
# False

 

Dictionary 의 value access

 

먼저 Dictionary의 값을 접근하는 방법은

dict[key] : 키가 없는 경우 에러 발생

.get( ) 함수로 접근, 키가 없는 경우 None반환

예시는 아래와 같습니다.

 

class_name = {
    0 : '자료구조',
    1 : '컴퓨터 공학',
    2 : '알고리즘',
    3 : 'python',
    4 : 'C++',
    5 : '경제학개론',
    6 : '법과 정치'
}

print(class_name.get(0))
print(class_name[3])

# print(class_name[7]) -> 에러가 발생하므로 if를 이용해 아래와 같이 표현
if 7 in class_name:
    print(class_name[7])

## 출력 값 
# 자료구조
# python

 

Dictionary 에서 모든 keys, values를 접근하기 위한 함수들

 

keys( ) - 키만 반환

values( ) - 값만 반환

items( ) - 키, 값의 튜플을 반환

예시는 다음과 같습니다.

 

class_name = {
    0 : '자료구조',
    1 : '컴퓨터 공학',
    2 : '알고리즘',
    3 : 'python',
    4 : 'C++',
    5 : '경제학개론',
    6 : '법과 정치'
}
print(class_name)
print(list(class_name.keys()))
print(list(class_name.values()))

list(class_name.ites())

## 출력 값 
# {0: '자료구조', 1: '컴퓨터 공학', 2: '알고리즘', 3: 'python', 4: 'C++', 5: '경제학개론', 6: '법과 정치'}
# [0, 1, 2, 3, 4, 5, 6]
# ['자료구조', '컴퓨터 공학', '알고리즘', 'python', 'C++', '경제학개론', '법과 정치']
# [(0, '자료구조'),
#  (1, '컴퓨터 공학'),
#  (2, '알고리즘'),
#  (3, 'python'),
#  (4, 'C++'),
#  (5, '경제학개론'),
#  (6, '법과 정치')]

 

'Python > Python 개념' 카테고리의 다른 글

파이썬 함수 - 기초  (0) 2020.03.29
파이썬 반복분(While)  (1) 2020.03.29
파이썬 반복문(for)  (0) 2020.03.28
파이썬 조건문  (0) 2020.03.28
파이썬 List, Tuple의 개념  (0) 2020.03.28

댓글