🔗 출처

📘 Jump to Python 

02 파이썬 프로그래밍의 기초, 자료형

02-5 딕셔너리 자료형


  1. 딕셔너리란?
  2. 딕셔너리는 어떻게 만들까?
  3. 딕셔너리 쌍 추가, 삭제하기
    1. 딕셔너리 쌍 추가하기
    2. 딕셔너리 요소 삭제하기
  4. 딕셔너리를 사용하는 방법
    1. 딕셔너리에서 Key를 사용해 Value 얻기
    2. 딕셔너리 만들 때 주의할 사항
  5. 딕셔너리 관련 함수
    1. Key 리스트 만들기 -keys
    2. Value 리스트 만들기 - values
    3. Key, Value 쌍 얻기 - items
    4. Key: Value 쌍 모두 지우기 - clear
    5. Key로 Value 얻기 - get
    6. 해당 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로 리턴된다.

 

+ Recent posts