01_Python

25_컬렉션>딕셔너리

chuuvelop 2025. 1. 7. 01:38
728x90
01. 딕셔너리

 

  • 자료의 대응 관계를 나타내는 자료형
    • 연관 배열(Associative arry) 또는 해시(Hash)
  • 데이터를 조회할 때 key를 통해 value를 구함
  • 딕셔너리 선언
    • 중괄호{} 로 선언
    • 키 : 값 의 형태를 콤마(,)로 연결해서 만듦
      • 키는 문자열, 숫자, 불 등으로 선언할 수 있지만, 일반적으로는 문자열을 주로 사용
dic = {"name" : "andy", "birth" : "1118"}
print(dic)
{'name': 'andy', 'birth': '1118'}

 

dic = {"a" : [1, 2, 3]}

print(dic)
{'a': [1, 2, 3]}

 

02. 딕셔너리의 요소 추가, 삭제

 

# 키를 기반으로 값을 입력
dic["name"] = "jun"
print(dic)
{'a': [1, 2, 3], 'name': 'jun'}

 

 

# 이미 존재하는 키를 지정하고 값을 넣으면 기존의 값을 새로운 값으로 수정
dic["name"] = "파인애플"

print(dic)
{'a': [1, 2, 3], 'name': '파인애플'}

 

# 요소 삭제
del dic["name"]
print(dic)
{'a': [1, 2, 3]}

 

03. 딕셔너리 데이터 추출

score = {"kim" : 10, "lee" : 99}

print(score["kim"])
print(score["lee"])
10
99

 

  • 딕셔너리의 key는 고유한 값임
  • 중복을 허용하지 않음(동일한 key가 존재하면 어떤 value를 불러와야 할 지 알 수 없기 때문)
dic = {1 : "a", 1 : "b"}  ##키값이 중복되면 뒤에 있는것으로 덮어씌움

print(dic)
{1: 'b'}

 

  • 딕셔너리의 key에 튜플은 쓸 수 있음
    • 리스트는 쓸 수 없음
    • 딕셔너리의 key의 요건은 변하지 않는 값(immutable)
dic = {[1, 2] : "hi"}
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[50], line 1
----> 1 dic = {[1, 2] : "hi"}

TypeError: unhashable type: 'list'

 

dic = {(1, 2) : "hi"}

print(dic)
{(1, 2): 'hi'}
print(dic[(1, 2)])
hi

 

 

04. 딕셔너리 관련 함수
  • key, value, item 리스트
dic = {"name" : "andy", "phone" : "0119991234", "birth" : "1118"}
print(dic.keys())
dict_keys(['name', 'phone', 'birth'])
print(dic.values())
dict_values(['andy', '0119991234', '1118'])

 

print(dic.items())
dict_items([('name', 'andy'), ('phone', '0119991234'), ('birth', '1118')])

 

  • get으로 value 얻기
    • 존재하지 않는 키로 값을 가져오라고 할 경우 오류가 발생함
    • get으로 key가 없을 경우 기본값을 대신 가져오게 할 수 있음
dic["foo"]
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
Cell In[61], line 1
----> 1 dic["foo"]

KeyError: 'foo'
dic.get("foo", "bar") ##foo가 존재하면 그값을 출력, 존재하지 않으면 두번째 값(기본값)을 출력
'bar'
dic.get("name", "bar")
'andy'

 

  • 해당 key가 딕셔너리 안에 있는지 조사하기
"name" in dic
True

 

"email" in dic
False

 

dic.clear()

print(dic)
{}

 

 

05. 확인문제
# 다음의 pets 데이터에서 "호랑이"와 3을 각각 출력해보기

pets = [
    {"name" : "구름", "age" : 5}, 
    {"name" : "초코", "age" : 3}, 
    {"name" : "아지", "age" : 1}, 
    {"name" : "호랑이", "age" : 2}
]

print(pets[3]["name"])
print(pets[1]["age"])
호랑이
3

 

print(type(pets))  ##타입을 모르면 python에게 물어보기
<class 'list'>

 

print(pets[0])
{'name': '구름', 'age': 5}

 

print(pets[3]["name"])
호랑이

 

print(pets[1]["age"])
3

 

728x90

'01_Python' 카테고리의 다른 글

27_mutable과 immutable  (1) 2025.01.07
26_컬렉션>세트  (1) 2025.01.07
24_컬렉션>튜플  (0) 2025.01.07
23_컬렉션>리스트  (1) 2025.01.06
22_컬렉션>컬렉션 종류 및 개요  (0) 2025.01.03