목차

딕셔너리
딕셔너리는 키(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 |