자기계발/Python

[Python] 기본8. 딕셔너리와 for()반복문

호등 2022. 3. 1. 16:31
반응형

딕셔너리(Dictionary)

: 리스트가 인덱스를 기반으로 값을 저장했다면 딕셔너리는 키를 기반으로 값을 저장하는 것.

중괄호 { }로 선언하며, '키: 값' 형태를 쉼표(,)로 연결해서 사용한다.

키는 문자열, 숫자, bool 등으로 선언 가능하지만 일반적으로 문자열을 사용함

 

딕셔너리 형태 (단, □는 공백을 의미)

변수 = {

□□□□키: 값,

□□□□키: 값,

□□□□....

□□□□키: 값

}


딕셔너리 요소에 접근

dict_a = {
    "name" : ["짱구", "철수", "유리", "훈이", "맹구"], #키에 값이 여러 개면 [ ]로 묶어준다
    "address" : "떡잎마을"
    }

print(dict_a["address"]) #딕셔너리 요소에 접근하는 법은 리스트랑 비슷하다. (출력결과 : "떡잎마을")

딕셔너리를 선언할 때 키에 값이 여러 개면 대괄호[ ]로 묶어서 사용한다.

( 딕셔너리와 리스트를 조합하여 사용하는 것도 가능하다. 리스트 안에 딕셔너리 선언 가능 )

리스트처럼 딕셔너리 뒤에 대괄호[ ]를 입력하고 내부에 키 값을 입력하면 해당 요소에 접근이 가능하다.

 

키를 문자열로 사용할 때 반드시 따옴표를 사용해야 한다.

따옴표로 묶지 않는 실수를 하면 "NameError"가 뜨게된다.

 

dict_a = {
    "name" : ["짱구", "철수", "유리", "훈이", "맹구"], #키에 값이 여러 개면 [ ]로 묶어준다
    "address" : "떡잎마을"
    }

print(dict_a["name"][0]) #키 "name"은 요소인 동시에 리스트이므로 이렇게도 접근이 가능하다.
print(dict_a["name"][1]) #출력결과 : 철수

name은 dict_a의 키이면서 여러 개의 자료를 갖고 있는 리스트이다.

따라서 위의 코드처럼 인덱스를 지정하여 리스트 안의 특성 값을 출력하는 것도 가능하다.

 

딕셔너리 요소 추가/제거

dict_a = {
    "name" : ["짱구", "철수", "유리", "훈이", "맹구"],
    "address" : "떡잎마을"
    }

dict_a["age"] = 5 #dict_a에 "age"라는 키를 추가한다.

print(dict_a) #출력결과 :{'name': ['짱구', '철수', '유리', '훈이', '맹구'], 'address': '떡잎마을', 'age': 5}

del dict_a["age"]

print(dict_a) #출력결과 :{'name': ['짱구', '철수', '유리', '훈이', '맹구'], 'address': '떡잎마을'}

딕셔너리를 추가할 때는 새로운 키에 새로운 값을 넣어주면 된다. 아주 간단하다!

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

 

딕셔너리를 삭제할 때도 간단하다. del 키워드를 사용하여 키를 지워주면 된다.

del 딕셔너리[삭제할 키]

 

딕셔너리 내부에 키 확인하는 방법 : in 키워드

dict_a = {
    "name" : ["짱구", "철수", "유리", "훈이", "맹구"],
    "address" : "떡잎마을"
    }

key = input("> 접근하려고 하는 키: ") #키를 입력받는다.

if key in dict_a :
    print(dict_a[key]) #키가 딕셔너리에 있다면 키에 해당하는 값을 출력
else:
    print("존재하지 않는 키입니다.")

리스트에 사용했던 것처럼 in 키워드를 사용하여 딕셔너리 내부에 접근할 수 있다.

 

이 코드에서는 if 구문을 사용하여 dict_a안에 입력받은 키 값이 있을 때 코드를 실행한것이지만

없는 키를 그냥 print( )함수로 출력했다면 "KeyError"를 발생시킨다.

이런 경우엔 get( ) 함수를 사용하면 KeyError를 발생시키지 않고 None 값을 출력할 수 있다.


get( )함수

dict_a = {
    "name" : ["짱구", "철수", "유리", "훈이", "맹구"],
    "address" : "떡잎마을"
    }

value = dict_a.get("age") #dict_a 내부에 없는 키 "age"를 입력했다.
print("값 :", value) #value값을 출력

if value == None:
    print("존재하지 않는 키에 접근했었습니다.")

get( )함수는 딕셔너리 뒤에 .(마침표) 붙이고 사용할 수 있는 함수 중 하나이다.

딕셔너리의 키로 값을 추출하는 기능을 하며 존재하지 않는 키에 접근할 경우 None 값이 들어간다.

( 딕셔너리.get(키)와 딕셔너리[키]의 기능은 같다. )


딕셔너리와 for( )반복문

dict_a = {
    "name" : ["짱구", "철수", "유리", "훈이", "맹구"],
    "address" : "떡잎마을"
    }

#dict_a 안에 있는 키와 값을 출력
for key in dict_a :
    print( key, ":", dict_a[key])
    
'''
출력결과
name : ['짱구', '철수', '유리', '훈이', '맹구']
address : 떡잎마을
'''

for( )구문을 활용하여 딕셔너리 내부의 키와 값을 전부 출력한 코드

반응형