📘 Jump to Python
02 파이썬 프로그래밍의 기초, 자료형
02-5 딕셔너리 자료형
- 딕셔너리란?
- 딕셔너리는 어떻게 만들까?
- 딕셔너리 쌍 추가, 삭제하기
- 딕셔너리 쌍 추가하기
- 딕셔너리 요소 삭제하기
- 딕셔너리를 사용하는 방법
- 딕셔너리에서 Key를 사용해 Value 얻기
- 딕셔너리 만들 때 주의할 사항
- 딕셔너리 관련 함수
- Key 리스트 만들기 -keys
- Value 리스트 만들기 - values
- Key, Value 쌍 얻기 - items
- Key: Value 쌍 모두 지우기 - clear
- Key로 Value 얻기 - get
- 해당 Key가 딕셔너리 안에 있는지 조사하기 - in
1. 딕셔너리란?
- Key와 Value를 한 쌍으로 가지는 자료형이다.
- 예)
Key == "baseball"
Value == "야구"
- 예)
- 리스트나 튜플처럼 순차적으로(sequential) 해당 요솟값을 구하지 않고 key를 통해서 value를 얻는다.
2. 딕셔너리는 어떻게 만들까?
딕셔너리의 기본 모습
{Key1: Value1, Key2: Value2, Key3: Value3, ...}
예 1)
dic = {'name': 'pey',
'phone': '010-9999-1234',
'birth': '1118'}
예 2)
# Key == 1, Value == 'hi'
a = {1: 'hi'}
예 3)
# Value에 리스트도 가능하다.
a = {'a': [1, 2, 3]}
3. 딕셔너리 쌍 추가, 삭제하기
3.1. 딕셔너리 쌍 추가하기
딕셔너리 명['추가할 Key명'] = '추가할 Value명'
# 추가 1
a = {1: 'a'}
a[2] = 'b'
print(a)
{1: 'a', 2: 'b'}
- 딕셔너리 a에 Key([2])를 설정해 주고 그에 할당되는 Value('b')를 적어주면 쌍으로 딕셔너리 a에 추가된다.
# 추가 2
a['name'] = 'pey'
print(a)
{1: 'a', 2: 'b', 'name': 'pey'}
# 추가 3
a[3] = [1, 2, 3]
print(a)
{1: 'a', 2: 'b', 'name': 'pey', 3: [1, 2, 3]}
3.2. 딕셔너리 요소 삭제하기
del 딕셔너리 명[Key 명]
del a[1]
print(a)
{2: 'b', 'name': 'pey', 3: [1, 2, 3]}
- 1(Key)에 해당하는 value까지 삭제된 걸 알 수 있다.
4. 딕셔너리를 사용하는 방법
4.1. 딕셔너리에서 Key를 사용해 Value 얻기
딕셔너리 변수 명['Key명']
grade = {'pey': 10, 'julliet': 99}
print(grade['pey'])
10
print(grade['julliet'])
99
- 리스트나 튜플은 요솟값을 부를 때, 인덱싱이나 슬라이싱 기법 중 하나를 사용한다.
- 하지만 딕셔너리는 Key를 통해서 원하는 Value를 쉽게 불러올 수 있다.
다른 예시
a = {1:'a', 2:'b'}
print(a[1])
'a'
print(a[2])
'b'
- a[1]은 인덱싱 번호가 아니라 Key를 의미하는 것을 헷갈려선 안 된다.
- 딕셔너리에서는 인덱싱 방법을 적용할 수 없다.
4.2. 딕셔너리 만들 때 주의할 사항
Key가 중복되면 하나를 제외한 나머지 것들은 모두 무시된다.
즉, Key는 중복이 불가능하다.
# Key가 1로 중복된 상황
a = {1:'a', 1:'b'}
print(a)
{1: 'b'}
Key에 리스트형은 올 수 없다.
a = {[1,2] : 'hi'}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
- 하지만 튜플은 Key로 쓸 수 있다.
- Key로 쓸 수 있느냐 없느냐는 Key가 변하는(mutable) 값인지, 변하지 않는(immutable) 값인지에 달려 있다.
- Value는 변하는 값이든, 변하지 않는 값이든 아무 값이나 넣을 수 있다.
5. 딕셔너리 관련 함수
5.1. Key 리스트 만들기 -keys
.keys()
a = {'name': 'pey',
'phone': '010-9999-1234',
'birth': '1118'}
print(a.keys())
dict_keys(['name', 'phone', 'birth'])
.keys() 함수의 다른 사용 예시
# for문에 적용한 예시
for k in a.keys():
... print(k)
...
name
phone
birth
# keys들 리스트화 하기
print(list(a.keys()))
['name', 'phone', 'birth']
5.2. Value 리스트 만들기 - values
print(a.values())
dict_values(['pey', '010-9999-1234', '1118'])
- 딕셔너리의 Value만을 모아 dict_values 객체를 리턴한다.
5.3. Key, Value 쌍 얻기 - items
.items()
print(a.items())
dict_items([('name', 'pey'), ('phone', '010-9999-1234'), ('birth', '1118')])
- Key와 Value의 쌍을 튜플로 묶은 값을 dict_items 객체로 리턴한다.
5.4. Key: Value 쌍 모두 지우기 - clear
.clear()
a.clear()
print(a)
{}
5.5. Key로 Value 얻기 - get
.get(x)
a = {'name': 'pey', 'phone': '010-9999-1234', 'birth': '1118'}
print(a.get('name'))
'pey'
print(a.get('phone'))
'010-9999-1234'
- x라는 Key에 대응하는 Value를 리턴한다.
a.get('name')은 a['name']과 동일한 결괏값을 리턴한다.
하지만 해당하는 Key가 없을 시, 결괏값은 다르게 리턴된다.
a = {'name':'pey', 'phone':'010-9999-1234', 'birth': '1118'}
print(a.get('nokey'))
None
print(a['nokey’]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'nokey'
- .get() 함수는 "None"을 리턴하지만 a['key명']은 오류가 발생한다.
.get(x, '디폴트 값')으로 디폴트 값을 변경할 수 있다.
print(a.get('nokey', 'foo'))
'foo'
- 해당 딕셔너리에는 'nokey'라는 Key가 없기 때문에 디폴트 값으로 설정해 준 'foo'가 리턴되었다.
5.6. 해당 Key가 딕셔너리 안에 있는지 조사하기 - in
'Key명' in 딕셔너리 명
a = {'name':'pey', 'phone':'010-9999-1234', 'birth': '1118'}
print('name' in a)
True
print('email' in a)
False
- 해당 Key가 딕셔너리에 있으면 True or False로 리턴된다.