Language/PYTHON

딕셔너리

구일일구 2021. 6. 20. 23:48
반응형

딕셔너리와 리스트의 차이점

자료형 의미 가리키는 위치 선언 형식
리스트 인덱스를 기반으로 값을 저장 인덱스 변수 = [ ]
딕셔너리 키를 기반으로 값을 저장 변수 = { }

 

딕셔너리 선언하기

딕셔너리는 { } 중괄호로 선언하며, '키: 값'의 형태를 따옴표(,)로 연결해서 만듦

키는 문자열, 숫자, 불 등으로 선언할 수 있으나 일반적으로는 문자열로 사용하는 경우가 많음

 

기본 형태

변수 = {
	키: 값,
    키: 값, 
    ...
    키: 값
}

 

dict_a = {
    "name": "어밴져스 엔드게임",
    "type": "히어로 무비"
        }

print(dict_a)
</>
{'name': '어밴져스 엔드게임', 'type': '히어로 무비'}

 

딕셔너리의 요소에 접근하기

리스트처럼 딕셔너리 뒤에 [ ] 대괄호를 입력하고 내부에 인덱스처럼 키를 입력

딕셔너리를 선언할 때는 { }를 사용하지만, 딕셔너리의 요소에 접근할 때는 리스트처럼 [ ] 대괄호를 입력함

print(dict_a["name"])
</>
'어벤져스 엔드게임'

print(dict_a["type"])
</>
'히어로 무비'

 

리스트와 딕셔너리도 하나의 자료이므로, 리스트와 딕셔너리를 값으로 넣을 수 있음

dict_b = {
    "director": ["안소니 루소", "조 루소"],
    "cast": ["아이언맨", "타노스", "토르", "닥터스트레인지", "헐크"]
    }

print(dict_b)
print(dict_b["director"])
</>
{'director': ['안소니 루소', '조 루소'], 'cast': ['아이언맨', '타노스', '토르', '닥터스트레인지', '헐크']}
['안소니 루소', '조 루소']
구분 선언 형식 사용 예 틀린 예
리스트 list_a = [ ] list_a[1]  
딕셔너리 dict_a = { } dict_a["name"] dict_a{"name"}

 

리스트 안의 특정 값 출력

print(dictionary["ingredient"])
</>
['망고', '설탕', '메타중아황산나트륨', '치자황색소']

print(dictionary["ingredient"][1])
</>
'설탕'

 

딕셔너리에 값 추가하기

딕셔너리[새로운 키] = 새로운 값

dictionary["price"] = 5000
print(dictionary)
</>
{'name': '7D 건조 망고', 'type': '당절임', '
ingredient': ['망고', '설탕', '메타중아황산나트륨', '치자황색소'], 
'origin': '필리핀', 'price': 5000}

 

딕셔너리 값 변경하기

딕셔너리[원래 키] = 변경한 값

# 딕셔너리 선언
dictionary = {
    "name": "7D 건조 망고",
    "type": "당절임",
    "ingredient": ["망고", "설탕", "메타중아황산나트륨", "치자황색소"],
    "origin": "필리핀"
}

# 값을 변경
dictionary["name"] = "8D 건조 망고"
print(dictionary["name"])
</>
8D 건조 망고

 

딕셔너리 값 제거하기

del 딕셔너리[키]

리스트와 같이 del 키워드를 사용하여 특정 키를 지정하면 해당 요소가 제거됨

del dictionary["ingredient"]
print(dictionary)
</>
{'name': '7D 건조 망고', 'type': '당절임', 
'origin': '필리핀', 'price': 5000}

 

아무것도 없는 딕셔너리에 요소 추가하기

dictionary = {}

# 딕셔너리에 요소 추가
dictionary["name"] = "새로운 이름"
dictionary["head"] = "새로운 정신"
dictionary["body"] = "새로운 몸"

print(dictionary)
</>
{'name': '새로운 이름', 'head': '새로운 정신', 'body': '새로운 몸'}

 

딕셔너리 내부에 키 있는지 확인

In 키워드

리스트 내부에 값이 있는지 없는지 확인하는 것과 같이 딕셔너리 내부에 키가 있는지 없는지 확인

print("name" in dictionary)
print("ingredient" in dictionary)
</>
True
True

 

키가 존재하는지 확인하고 값에 접근하기

# 딕셔너리 선언
dictionary = {
    "name": "7D 건조 망고",
    "type": "당절임",
    "ingredient": ["망고", "설탕", "메타중아황산나트륨", "치자황색소"],
    "origin": "필리핀"
}

key = input("접근하고자 하는 키: ")

if key in dictionary:
    print(dictionary[key])
else:
    print("존재하지 않는 키에 접근하고 있습니다.")

 

get( ) 함수

get() 함수는 딕셔너리의 키로 값을 추출하는 기능

딕셔터리[키]를 입력할 때와 같은 기능 수행

그러나 존재하지 않는 키에 접근할 경우 KeyError를 발생시키지 않고 None을 출력

# 딕셔너리 선언
dictionary = {
    "name": "7D 건조 망고",
    "type": "당절임",
    "ingredient": ["망고", "설탕", "메타중아황산나트륨", "치자황색소"],
    "origin": "필리핀"
}

#존재하지 않는 키에 접근하기
value = dictionary.get("존재하지 않는 키")
print(value)

# none 확인 방법
if value == None:
	print("존재하지 않는 키에 접근했었습니다.")
    
#존재하는 키에 접근
value = dictionary.get("type")
print("값:", value)

NameError 오류

딕셔너리의 키를 문자열로 사용할 때는 반드시 따옴표를 붙여야 함

이러한 코드를 실행하지 않으면 NameError라는 오류가 발생

dict_key = {
    name: "7D 건조 망고",
    type: "당절임"
}
</>
NameError: name 'name' is not defined

 

KeyError 예외

리스트의 길이를 넘는 인덱스에 접근하면 IndexError가 발생하듯,

딕셔너리도 존재하지 않는 키에 접근, 존재하지 않는 키를 제거할 때 마찬가지로 KeyError가 발생함

dictionary = {}
print(dictionary["key"])
</>
KeyError: 'key'

 

반응형