[Python] 파이썬 딕셔너리(Dictionary) 사용법 & 예제 총정리

파이썬 딕셔너리(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" 딕셔너리의 각각의 정보들을 가지고 올 수 있습니다.

 

댓글

Designed by JB FACTORY