파이썬

[파이썬] 자료형 정리(딕셔너리)

2ns 2024. 2. 8. 17:24

딕셔너리 (Dictionary)

: 여러 방이 있는 하나의 큰 건물로, 각 방은 이름(Key)이 있고, 각 호실에 여러 자료(Value)들이 들어가 있다.

A = {"601호":1, "501호":3, "401호":"a", "301호":[1, 2, 3], "201호":(1, 2, 3), "101호":{1,2,3}}

딕셔너리 개념도

 

 1) 딕셔너리 만들기

딕셔너리는 Key와 Value로 구성되어 있다. Key는 이름이고, Value는 값이라고 생각하면 편하다.

{ } (중괄호)로 구성되어 있으며, {Key 1: Value 1, Key 2: Value 2, ...} 이런 식으로 구성된다.

A = {"name" : "손흥민", "국적" : "대한민국", "소속팀" : "토트넘"}

 

 2) 딕셔너리 쌍 추가 및 삭제

# 딕셔너리 쌍 추가
A = {"name" : "손흥민", "국적" : "대한민국", "소속팀" : "토트넘"}
A["득점 수"] = "12골"
A
# Results: {"name" : "손흥민", "국적" : "대한민국", "소속팀" : "토트넘", "득점 수" : "12골"}

A = {"name" : "손흥민", "국적" : "대한민국", "소속팀" : "토트넘", "득점 수" : "12골"}
del A["국적"]
A
# Results: {"name" : "손흥민", "소속팀" : "토트넘", "득점 수" : "12골"}

 

 3) 딕셔너리 Key 및 Value 가져오기

A = {"name" : "손흥민", "국적" : "대한민국", "소속팀" : "토트넘", "득점 수" : "12골"}
A["name"] # A[key]를 함으로써 해당 key에 대한 value를 불러온다.
# Results : "손흥민"

A.get["name"] # A[key] 방식과 같이 해당 key에 대한 value를 불러온다. 
# Results : "손흥민"

A.keys()
# Results: dict_keys(["name", "국적", "소속팀", "득점 수"])

A.values()
# Results: dict_values(["손흥민", "대한민국", "토트넘", "12골"])


# A.keys()와 A.values()는 for문, while문에서 활용이 가능하므로 잘 알아두면 좋다.
# 예시

for i in A.keys():
	print(i)
    
# Results:
# "name"
# "국적"
# "소속팀"
# "득점 수"


A.items()
# Results: dict_items([("name" : "손흥민"), ("국적" : "대한민국"), ("소속팀" : "토트넘"), ("득점 수" : "12골")])

 

주의해야 할 점은 하나의 Key 값에 여러 개의 Value가 있을 경우, 뒤의 Value만 가져와지기 때문에,

최대한 하나의 Key에 하나의 Value를 매칭시키는 것이 좋다.

 

또한 Key는 변할 수 없는 요소이기 때문에 Key 자리에 (변할 수 있는) 리스트는 올 수 없다.

Value는 변할 수 있으므로, 리스트, 튜플, 딕셔너리 등 모두 올 수 있다.

 

 

또한, 위에서 key에 대한 해당 value를 가져오는 것으로 두 가지 방식이 있는데, 결과를 다르게 반환한다는 차이가 있다.

# key로 value 얻기(1)
# A[key] 방식

A = {"name" : "손흥민", "국적" : "대한민국", "소속팀" : "토트넘", "득점 수" : "12골"}
A["득점왕 유무"] # A[key]를 함으로써 해당 key에 대한 value를 불러온다.
# Results : 아래와 같은 오류 반환
# Traceback (most recent call last):
  # File "<stdin>", line 5, in <module>
# KeyError: '득점왕 유무'

 

A[key] 방식을 할 경우, 딕셔너리에 존재하지 않는 key로 value를 가져오려고 할 때, 오류가 발생한다.

 

반면, A.get[key] 방식은 오류가 아닌 None을 반환한다.

# key로 value 얻기(2)
# A.get(key) 방식

A = {"name" : "손흥민", "국적" : "대한민국", "소속팀" : "토트넘", "득점 수" : "12골"}
A.get("득점왕 유무") 
# Results : None

 

또한, 딕셔너리 안에 찾으려는 key가 없는 경우에 미리 정한 특정 값을 대신 가져오게 할 수도 있다.

# key로 value 얻기(2)
# A.get(key, 설정한 값) 방식

A = {"name" : "손흥민", "국적" : "대한민국", "소속팀" : "토트넘", "득점 수" : "12골"}
A.get("득점왕 유무", "없음") 
# Results : "없음"

 

 4) 딕셔너리 관련 함수(추가)

# 특정 key가 딕셔너리 안에 있는지 조사하는 방법 - in을 쓰기

A = {"name" : "손흥민", "국적" : "대한민국", "소속팀" : "토트넘", "득점 수" : "12골"}

"name" in A
# Results : True

"득점왕 유무" in A
# Results : False

 

 

참고했던 공부자료: Do it! 점프 투 파이썬중학생도 첫날부터 실습하는 초고속 입문서

(2023.06.15 개정) https://wikidocs.net/book/1