파이썬 딕셔너리(Dictionary)이란?
혹시 Map이라는 자료구조에 대해서 아시나요? Key - Value 구조로 널리 알려진 Map이라는 자료구조는 파이썬에서는 딕셔너리(Dictionary)라는 자료구조명으로 불립니다. 파이썬에서는 중괄호 { }로 딕셔너리를 생성하며 각각의 Key와 Value는 콜론(:)으로 구분되어 있고 각각의 값은 콤마(,)로 구분되어 있습니다.
딕셔너리를 사용할 때 주의할 점
- 딕셔너리의 키는 고유해야 합니다. 중복된 키를 사용하면 마지막으로 설정한 값으로 덮어씌워집니다.
- 딕셔너리는 순서가 보장되지 않습니다. 다만 파이썬 3.7 이상부터는 입력 순서가 유지되는 OrderedDict를 사용할 수 있습니다.
- 딕셔너리에 없는 키를 사용하면 KeyError가 발생합니다. 이를 방지하기 위해 get() 메서드를 사용하거나, if key in my_dict: 문을 활용할 수 있습니다.
파이썬 딕셔너리(Dictionary) 생성하기
파이썬에서는 딕셔너리를 생성할 수 있는 다양한 방법들을 제공합니다.
{ } 중괄호를 사용하여 생성하기
fruits = {"apple": 3, "banana": 5, "orange": 7} # 초기값을 가지는 딕셔너리 생성
print(fruits)
결과 : {'apple': 3, 'banana': 5, 'orange': 7}
파이썬에서 딕셔너리를 생성할 때는 { } 중괄호를 사용합니다. 그리고 key와 value는 콜론(:)으로 구분하며 각 값은 콤마(,)로 구분해 줍니다.
dict() 생성자를 사용해서 딕셔너리 만들기
fruits = dict(apple=3, banana=5, orange=7)
print(fruits)
결과 : {'apple': 3, 'banana': 5, 'orange': 7}
dict() 생성자를 사용하여 딕셔너리를 생성하는 방법도 있습니다. 이 방법은 일반적인 딕셔너리 생성 방법인 중괄호 { }를 사용하는 방법과 문법의 차이만 있을 뿐 최종적으로 생성되는 딕셔너리는 동일하기에 큰 차이점은 없습니다. 개인의 코드스타일에 맞게끔 선택해 주시면 되겠습니다.
Key Value를 리스트로부터 가져와서 딕셔너리를 생성
# key와 value가 하나의 리스트에 저장되어 있는 경우
items = [("apple", 3), ("banana", 5), ("orange", 7)]
fruit = dict(items)
print(fruit)
# key와 value가 각각의 리스트에 저장되어 있는 경우
fruit_names = ["apple", "banana", "orange"]
fruit_counts = [3, 5, 7]
fruits = dict(zip(fruit_names, fruit_counts))
print(fruits)
결과 ↓
{'apple': 3, 'banana': 5, 'orange': 7}
{'apple': 3, 'banana': 5, 'orange': 7}
파이썬에서 대부분의 데이터들은 리스트 형태로 관리를 많이 하고, 때로는 리스트에서 딕셔너리로 변환 작업을 해야 할 때가 생길 수 있습니다. 이럴 때는 위와 같은 방식으로 해주시면 됩니다. 참고로 zip() 메서드는 여러 개의 리스트를 동시에 묶어서 하나의 튜플로 묶는 함수입니다. 위와 같이 zip()을 사용하여 key와 value가 각각의 리스트로 제공되더라도 하나의 리스트로 묶어서 딕셔너리로 만들 수 있습니다.
빈 딕셔너리 생성
empty_dict = {}
print(empty_dict)
결과 : {}
위와 같이 빈 딕셔너리를 생성할 수도 있습니다. 딕셔너리는 동적으로 값을 추가하거나 삭제 or 수정할 수 있기 때문에 위와 같이 딕셔너리를 먼저 만들어놓고 추후에 사용하는 방식으로 코드를 조금 더 효율적으로 작성하실 수도 있겠습니다.
파이썬 딕셔너리(Dictionary) 활용하기
딕셔너리 요소에 접근하기
fruits = {"apple": 5, "banana": 3, "orange": 2}
# 특정 키의 값에 접근
apple_count = fruits["apple"]
banana_count = fruits["banana"]
print(apple_count) # 출력: 5
print(banana_count) # 출력: 3
결과 ↓
5
3
딕셔너리의 값은 키(Key)를 사용하여 접근할 수 있습니다. 딕셔너리["Key"]와 같은 형태로 사용해 주시면 됩니다.
딕셔너리의 값 수정하기
fruits = {"apple": 5, "banana": 3, "orange": 2}
# 특정 키의 값 수정하기
fruits["apple"] = 10
print(fruits) # 출력: {'apple': 10, 'banana': 3, 'orange': 2}
결과 : {'apple': 10, 'banana': 3, 'orange': 2}
딕셔너리의 값을 수정하려면 해당 키를 사용하여 접근한 후 새로운 값을 다시 넣어주시면 됩니다.
딕셔너리의 값 추가하기
fruits = {"apple": 5, "banana": 3}
# 새로운 키-값 쌍 추가
fruits["orange"] = 2
print(fruits) # 출력: {'apple': 5, 'banana': 3, 'orange': 2}
결과 : {'apple': 5, 'banana': 3, 'orange': 2}
딕셔너리의 값을 추가하려면 새로운 키를 딕셔너리에 명시하고 값을 넣어주시면 됩니다.
딕셔너리의 값 삭제하기
fruits = {"apple": 5, "banana": 3, "orange": 2}
# 특정 키 삭제
del fruits["banana"]
print(fruits) # 출력: {'apple': 5, 'orange': 2}
# 특정 키를 삭제하면서 반환
removed_value = fruits.pop("apple")
print(removed_value)
print(fruits) # 출력: {''orange': 2}
결과 ↓
{'apple': 5, 'orange': 2}
5
{'orange': 2}
딕셔너리의 값을 삭제하려면 del 키워드를 사용하거나 pop() 메서드를 활용할 수 있습니다. del 키워드를 사용하면 단순히 딕셔너리의 값을 삭제하며 pop() 메서드를 사용하면 딕셔너리의 값을 삭제하면서 동시에 삭제하는 값을 반환한다는 차이점이 있습니다.
딕셔너리에 키가 존재하는지 확인하기
fruits = {"apple": 5, "banana": 3, "orange": 2}
# 특정 키가 있는지 확인하기
if "apple" in fruits:
print("Apple이라는 key가 존재합니다.")
결과 : Apple이라는 key가 존재합니다.
딕셔너리에서 특정 키가 존재하는지 여부를 확인하려면 딕셔너리를 in 키워드를 사용해서 key값이 있는지 확인하면 됩니다.
get() 메서드를 활용해서 key의 value값을 가져오거나 기본값을 가져오기
fruits = {"apple": 5, "banana": 3, "orange": 2}
# "banana" 키의 값 또는 기본값인 0을 가져옴
banana_count = fruits.get("banana", 0)
print(banana_count)
결과 : 3
딕셔너리의 get() 메서드를 사용해서도 딕셔너리에서 특정 키의 값을 가져올 수 있습니다. 특히 이 메서드는 키가 존재하지 않더라도 기본값을 반환하기 때문에 오류를 발생시키지 않고 프로그램을 유지할 수 있다는 장점이 있습니다.
딕셔너리의 모든 키와 값에 접근하기
fruits = {"apple": 5, "banana": 3, "orange": 2}
keys = fruits.keys() # 모든 키를 가져옴
print(keys)
values = fruits.values() # 모든 값들을 가져옴
print(values)
items = fruits.items() # 모든 키-값 쌍을 가져옴
print(items)
결과 ↓
dict_keys(['apple', 'banana', 'orange'])
dict_values([5, 3, 2])
dict_items([('apple', 5), ('banana', 3), ('orange', 2)])
위의 예시에서 나열한 메서드를 통해 "fruits" 딕셔너리의 각각의 정보들을 가지고 올 수 있습니다.
'Language > Python' 카테고리의 다른 글
[Python] 파이썬 while문 사용법 & 예제 총정리 (1) | 2023.09.08 |
---|---|
[Python] 파이썬 if, if-elif, else문 사용법 & 예제 총정리 (0) | 2023.09.07 |
[Python] 파이썬 튜플(Tuple) 사용법 & 예제 총정리 (0) | 2023.08.26 |
[Python] 파이썬 리스트에서 최대값, 최소값, 평균값, 중간값, 합계 구하는 방법 (0) | 2023.08.24 |