본문 바로가기

Programming Language/Python

Ⅱ. 자료형 (5. 딕셔너리)

  • 딕셔너리(Dictionary) = key를 통해 value를 얻는 대응 관계를 갖는 자료형.

# key와 value의 쌍 여러 개를 중괄호 {}로 둘러싼 형태입니다.

 

개념 형태
딕셔너리
(Dictionary)

D = {A : a, B : b, C : c}
D = dict(Z)

D = 변수
A,B,C = 이름표(key)
a,b,c = 데이터(value)
Z = 2개의 데이터 쌍
변수에 이름표와 데이터를 짝지은 세트를 저장한 것. (key-value set)

 

d = {'a':1,'b':2,'c':3}
print(type(d))

<class 'dict'>

 

a = ['a','b','c']
b = [1,2,3]
c = zip(a,b)
d = dict(c)
print(d)

{'a': 1, 'b': 2, 'c': 3}

 

 

 

 

5-(1) 딕셔너리의 기본 특징

  • key를 통한 접근

: 딕셔너리는 key를 통해서 value에 접근합니다.

# 리스트나 튜플처럼 순차적으로 해당 요솟값을 요구하지 않으므로 딕셔너리의 요소에는 순서나 인덱스가 없습니다.

 

d = {'a':1,'b':[1,2,3]}
print(d[0])

Error

 

 

  • key가 가질 수 있는 자료형

key는 변하면 안되므로 Immutable한 자료형을 사용합니다.

# 튜플은 사용할 수 있고, 리스트는 사용할 수 없습니다.

 

d = {(1,):'a',(2,3):'b'}
print(d)

{(1,): 'a', (2, 3): 'b'}

 

 

  • value가 가질 수 있는 자료형

value는 Mutable한 자료형과 Immutable한 자료형 모두를 사용할 수 있습니다.

 

d = {'a':1,'b':[1,2,3]}
print(d['b'])

[1, 2, 3]

 

 

  • 고유한 key

딕셔너리의 key값은 고유하므로 중복이 불가합니다.

# 중복되는 key값을 설정할 경우 마지막 데이터쌍을 제외한 나머지가 무시됩니다.

 

d = {1:'a',1:'b'}
print(d)

{1: 'b'}

 

 

  • 비어있는 딕셔너리

비어있는 딕셔너리를 만드는 방법은 2가지입니다.

① d = {}

② d= dict()

 

 

 

 

5-(2) 딕셔너리 데이터 추가하기

  • key-value
함수 내용
이름 key-value
설명 딕셔너리D에 새로운 key-value쌍을 추가해.
형태 D[A] = B
인자 D = 딕셔너리
A = 추가할 데이터의 key
B = 추가할 데이터의 value
반환 반환없음.
d = {'a':1,'b':[1,2,3]}
d['c'] = 5
print(d)

{'a': 1, 'b': [1, 2, 3], 'c': 5}

 

 

 

 

5-(3) 딕셔너리 데이터 삭제하기

  • del
함수 내용
이름 del
설명 딕셔너리 D의 데이터 중 key가 A인 데이터쌍을 삭제해.
형태 del D[A]
인자 D = 딕셔너리
A = 삭제하고자 하는 데이터의 key
반환 반환없음.
d = {'a':1,'b':[1,2,3]}
del d['b']
print(d)

{'a': 1}

 

 

 

 

5-(4) key, value 리스트 만들기

  •  key 리스트
함수 내용
이름 .keys
설명 딕셔너리 D의 key만 모아서 리스트를 만들고 dict_keys 객체를 반환해줘.
단, dict_keys 객체는 List가 아니므로 List 고유의 함수는 사용할 수 없음.
형태 D.keys()
인자 D = 딕셔너리
반환 dict_keys
d = {'a':1,'b':[1,2,3],'c':'wow'}
d.keys()

dict_keys(['a', 'b', 'c'])

 

  • value 리스트
함수 내용
이름 .values
설명 딕셔너리 D의 value만 모아서 리스트를 만들고 dict_values 객체를 반환해줘.
단, dict_values 객체는 List가 아니므로 List 고유의 함수는 사용할 수 없음. .
형태 D.values()
인자 D = 딕셔너리
반환 dict_values
d = {'a':1,'b':[1,2,3],'c':'wow'}
d.values()

dict_values([1, [1, 2, 3], 'wow'])

 

  • key-value 쌍 리스트
내용
이름 .items
설명 딕셔너리 D의 key-value 쌍만 모아서 튜플로 만들고, 그 튜플들을 리스트를
만들어서 dict_items 객체를 반환해줘.

단, dict_items 객체는 List가 아니므로 List 고유의 함수는 사용할 수 없음.
형태 D.items()
인자 D = 딕셔너리
반환 dict_items

 

 

 

 

5-(5) key로 value 얻기

 

함수 내용
이름 .get
설명 딕셔너리D의 x key에 해당하는 value를 반환해줘.
형태 D.get(x,d)
인자 D = 딕셔너리
x = key
d = 디폴트 값
반환 value
단, key가 존재하지 않을 때 디폴트값을 반환해.
단, 디폴트값이 설정되어 있지 않다면 None을 반환해.
d = {'A':1,'B':2,'C':3}
print(d.get('B'))

2

 

d = {'A':1,'B':2,'C':3}
print(d.get('D',999))

999

 

 

☆2가지 value 얻는 방법 비교

 

 

 

 

5-(6) 해당 key가 딕셔너리에 포함되어 있는지 확인하기

 

함수 내용
이름 in
설명 해당키 x가 딕셔너리D에 있으면 True, 없으면 False를 반환해줘.
형태 x in D
인자 D = 딕셔너리
x = key
반환 bool
d = {'name':'pey','birth':'1118'}
print('name' in d)

True

 

 

 

 

5-(7) key-value 쌍 모두 지우기

 

함수 내용
이름 .clear
설명 딕셔너리D의 key-value 쌍을 모두 지워줘.
형태 D.clear()
인자 D = 딕셔너리
반환 반환 없음.
d = {'name':'pey','birth':'1118'}
d.clear()
print(d)

{}

 

 

 

 

5-(8) 딕셔너리 내포

  • 딕셔너리 내포 (Dictionary comprehension) = 조건문(for문, if문)을 딕셔너리 안에 배치하여 조건문의 반환값을 key와 value를 가지는 딕셔너리를 생성하는 방법.
개념 형태
딕셔너리 내포 Dic= {a:b 조건문1 조건문2…}

a = 조건문1의 조건문2를 실행할 key
b = 조건문1의 조건문2를 실행할 value
조건문1의 조건문2를 실행한 a의 반환값을 key로 b의 반환값을 value로 가지는 딕셔너리를 만들어.

ex) 딕셔너리 내포 사용X

students = ['몽키', '선샤인', '시와', '톰']
scores = [85, 92, 78, 100]
score_dic = {}
for a, b in zip(students, scores) :
  score_dic[a] = b*10
print(score_dic)

{'몽키': 850, '선샤인': 920, '시와': 780, '톰': 1000}

 

ex) 딕셔너리 내포 사용O

students = ['몽키', '선샤인', '시와', '톰']
scores = [85, 92, 78, 100]
score_dic = {a : b*10 for a, b in zip(students, scores)}
print(score_dic)

{'몽키': 850, '선샤인': 920, '시와': 780, '톰': 1000}

 

 

 

 

 

*참고 : 점프 투 파이썬

'Programming Language > Python' 카테고리의 다른 글

Ⅱ. 자료형 (6. 집합)  (0) 2022.09.05
Ⅱ. 자료형 (4. 튜플)  (0) 2022.08.22
Ⅱ. 자료형 (3. 리스트)  (0) 2022.07.25
Ⅱ. 자료형 (2. 문자열)  (0) 2022.05.28
Ⅱ. 자료형 (1. 숫자형)  (0) 2022.04.27