개발

파이썬: 딕셔너리(Dictionary)

Funital01 2026. 4. 6. 01:01
목차

1. 딕셔너리

2. 추가 및 수정

3. 삭제

4. 딕셔너리 정보 확인

5. 딕셔너리 안전한 접근

딕셔너리

딕셔너리는 키(key)와 값(value)을 쌍으로 데이터 저장을 하는 자료 구조입니다.

즉, 키를 찾으면 값을 알 수 있는 것이죠.

 

일반적인 구조는 다음과 같습니다.

students={'name':'hong','age':10, 'addr':'서울'}

print(type(students))	# 출력값: <class 'dict'>

print(students['name'])	# 출력값: hong
print(students['age'])	# 출력값: 10
print(students['addr'])	# 출력값: 서울

 

딕셔너리에도 여러 가지 기능을 제공을 하고 있다는 것을 알 수 있는데요,

어떤 메서드들이 있는지를 알아보고자 합니다.

 

추가 및 수정

먼저, 딕셔너리 추가 기능에 대해 알아볼건데요, 

students={'name':'hong','age':10, 'addr':'서울'}

students['fav_food']='소고기'
print(students)	# 출력값: {'name': 'hong', 'age': 10, 'addr': '서울', 'fav_food': '소고기'}

students['fav_food']=['소고기','갈비','햄버거','치킨']
print(students)	# 출력값: {'name': 'hong', 'age': 10, 'addr': '서울', 'fav_food': ['소고기', '갈비', '햄버거', '치킨']}

students['age']=15
print(students)	# 출력값: {'name': 'hong', 'age': 15, 'addr': '서울', 'fav_food': ['소고기', '갈비', '햄버거', '치킨']}

 

해당 딕셔너리에 키 값이 없다면, 키 값을 지정해주고 그에 대한 value를 추가해 주면 됩니다.

value에는 꼭 단일값 만이 아니라, 리스트도 추가가 가능합니다!

만약 존재하는 키가 있다면, 키는 중복이 되지 않기에 해당 값만 변경이 됩니다.

 

삭제

추가 혹은 수정이 가능했다면, 삭제하는 기능도 있어야겠죠?

삭제는 4가지 방식으로 가능한데요,

  • pop(key)
  • popitem()
  • clear()
  • del

먼저, pop은 key 를 지정해서 해당 키의 값을 삭제할 수 있습니다.

students = {'name': 'hong',
 'age': 15,
 'addr': '서울',
 'fav_food': ['소고기', '갈비', '햄버거', '치킨']}
 
remove_item=students.pop('name')
print(remove_item)		# 출력값: hong

no_item=students.pop('school', '없음')
print(f"학교 정보: {no_item}")	# 출력값: 학교 정보: 없음

 

pop()의 기본값을 설정할 수도 있는데요,

키를 입력할때 그 키가 존재하지 않을 경우, 기본값을 따로 설정할 수도 있습니다.

 

popitem은 마지막 key-value 쌍을 삭제하는 기능을 하는데요, 

students = {'name': 'hong',
 'age': 15,
 'addr': '서울',
 'fav_food': ['소고기', '갈비', '햄버거', '치킨']}

pop_item_data=students.popitem()
print(pop_item_data)	# 출력값: ('fav_food', ['소고기', '갈비', '햄버거', '치킨'])

 

삭제할 키-값 쌍은 튜플로 반환이 됩니다.

 

clear는 내부의 모든 요소를 삭제할 때 사용하시면 됩니다.

students = {'name': 'hong',
 'age': 15,
 'addr': '서울',
 'fav_food': ['소고기', '갈비', '햄버거', '치킨']}
 
students.clear()
print(students)	# 출력값: {}

 

del은 특정 키를 삭제할 때 사용할 수 있지만, 변수 자체를 삭제하고자 할때도 사용이 가능합니다.

students = {'name': 'hong',
 'age': 15,
 'addr': '서울',
 'fav_food': ['소고기', '갈비', '햄버거', '치킨']}
 
del students['name']
print(students)	# 출력값: {'age': 15, 'addr': '서울', 'fav_food': ['소고기', '갈비', '햄버거', '치킨']}

del students
print(students)	# 출력값: NameError: name 'students' is not defined

 

딕셔너리 정보 확인

지금까지 정보들을 조작하는 메서드들에 대해 알아보았는데요,

지금부터는 이 딕셔너리 내부 아이템들을 접근해보고 조회해보는 메서드들을 알아보고자 합니다.

 

  • keys()/values()
students = {'name': 'hong',
 'age': 15,
 'addr': '서울',
 'fav_food': ['소고기', '갈비', '햄버거', '치킨']}

# 키 값만 출력
key_data=students.keys()
print(key_data)	# 출력값: dict_keys(['name', 'age', 'addr', 'fav_food'])

# values 값만 출력
value_data=students.values()
print(value_data)	# 출력값: dict_values(['hong', 15, '서울', ['소고기', '갈비', '햄버거', '치킨']])

# 모든 키-값 쌍 확인
all_data=students.items()
print(all_data)	# 출력값: dict_items([('name', 'hong'), ('age', 15), ('addr', '서울'), ('fav_food', ['소고기', '갈비', '햄버거', '치킨'])])

 

딕셔너리에서 키(key)만 출력하고 싶다면 keys() 메서드를 사용하면 되고,

값(value)만 출력하고 싶다면 values() 메서드를 사용하면 됩니다.

 

keys()는 딕셔너리에 저장된 모든 키를 모아서 보여주고,

values()는 각 키에 대응되는 값들만 따로 확인할 수 있도록 해줍니다.

 

딕셔너리의 모든 키-값 쌍을 확인하려면 items() 메서드를 사용할 수 있습니다.

items()는 각 요소를 (키, 값) 형태의 튜플로 묶어서 반환을 해주는데요!

 

여기서 키-값 쌍의 개수에 맞게 변수를 여러 개 선언하면,

각 튜플이 순서대로 변수에 하나씩 나누어 담기게 됩니다.

students = {'name': 'hong',
 'age': 15,
 'addr': '서울',
 'fav_food': ['소고기', '갈비', '햄버거', '치킨']}
 
a1, a2,a3, a4 = students.items()
print(a1)	# 출력값: ('name', 'hong')
print(a2)	# 출력값: ('age', 15)
print(a3)	# 출력값: ('addr', '서울')
print(a4)	# 출력값: ('fav_food', ['소고기', '갈비', '햄버거', '치킨'])

 

딕셔너리 안전한 접근

딕셔너리에서 값을 조회할 때는 존재하지 않는 키에 접근하면 오류가 발생할 수 있는데요,

이러한 상황을 방지하기 위해 안전하게 접근하는 방법으로 get() in을 사용할 수 있습니다.

 

  • get()
students = {'name': 'hong',
 'age': 15,
 'addr': '서울',
 'fav_food': ['소고기', '갈비', '햄버거', '치킨'],
 'key': {'t1', 't2', 't3'}}
 
print(students.get('addr'))	# 출력값: 서울

result=students.get('nai')
print(result)	# 출력값: None

result=students.get('nai','test')
print(result)	# 출력값: test

 

get은 해당 키가 존재하면 값을 반환하고,

존재하지 않으면 오류 대신 None 또는 기본값을 반환합니다.

 

  • in
students = {'name': 'hong',
 'age': 15,
 'addr': '서울',
 'fav_food': ['소고기', '갈비', '햄버거', '치킨']}
 
print('addr' in students.values())	# 출력값: False
print('age' in students.keys())	# 출력값: True
print(15 in students)	# 출력값: False

 

in은 특정 키가 딕셔너리에 존재하는지 먼저 확인할 때 사용합니다.

키가 있을 때만 접근하기 때문에 오류를 예방할 수 있습니다.

 

즉, 값이 없어도 기본값으로 처리하고 싶다면? => get()

반드시 키 존재 여부를 확인해야 한다면 => in

 

지금까지 저는 key의 존재 여부를 크게 신경 쓰지 않고 값을 가져왔지만,

이번 학습을 통해 안전한 접근 방식이 오류를 줄이는 데 중요하다는 것을 이해할 수 있었습니다!🧐


'개발' 카테고리의 다른 글

파이썬: 조건문(if)  (0) 2026.04.06
파이썬: 집합(Set)  (0) 2026.04.06
파이썬: 튜플(Tuple)  (0) 2026.04.04
파이썬: 리스트(List)  (0) 2026.04.04
파이썬: 반복문  (0) 2026.03.30