코린이의 개발 일지

[파이썬] 2. 딕셔너리 본문

프로그래밍 언어 문법/파이썬 문법 정리

[파이썬] 2. 딕셔너리

폴라민 2021. 8. 23. 13:38
반응형

딕셔너리는 리스트만큼은 아니지만 파이썬에서 꽤 유용하게 쓰이는 자료구조 입니다.

기본적으로 '키'와 'value'값으로 이루어져 있습니다.

my_dictionary={3:"hi",6:"bye"}
print(my_dictionary[3])

'''
출력 결과

hi
'''

딕셔너리에 있는 key 값을 통해 value값을 호출할 수 있습니다.

호출하는 명령은 .get이라는 메소드를 통해서도 할 수 있습니다.

 

print(my_dictionary.get(3)) # 위의 경우와 비슷

'''
출력 결과

hi
'''

그렇다면

my_dictionary[3]

my_dictionary.get(3

이 두 명령어의 차이점은 무엇일까요?

print(my_dictionary[4]) # 이렇게 입력할 경우 에러가 뜬다.
print(my_dictionary.get(4)) # 이렇게 입력할 경우 에러가 뜨지 않고 none이라고 출력

만약 딕셔너리에 없는 key를 입력할 경우 첫번째의 경우 에러가 뜨며 코드진행이 멈춥니다. 

두번째의 경우 none을 반환하고 이후의 코드 진행이 이어집니다.

또한 두번째의 경우

print(my_dictionary.get(4,"해당하는 키가 없음")) # none 대신 뒤에 있는 입력 문구를 출력

'''
출력 결과

해당하는 키가 없음
'''

이런식으로 None 대신 내가 원하는 문구를 반환하도록 할 수 있습니다.

 

또한 특정 키가 딕셔너리 내에 있는지 없는지 확인 할 수도 있습니다.

print(3 in my_dictionary) # True 반환
print(4 in my_dictionary) # False 반환
print("hi" in my_dictionary) # False 반환
# 키만 있는 지 없는지 확인 할 수 있고 value는 확인 불가능.

이 특징을 이용하면 반복문이나 조건문에서도 유용하게 쓸 수 있습니다.

 

또한 딕셔너리의 키는 문자열도 사용할 수 있습니다.

딕셔너리에 사용되는 메소드 들을 간단히 알아보면

# 문자열도 키로 사용 가능
my_dictionary={"key_3":"hi","key_6":"bye"}
print(my_dictionary["key_3"])

# 새로운 키 업데이트
my_dictionary["key_4"]="goodbye"
print(my_dictionary)

# 있던 키 삭제
del my_dictionary["key_4"]
print(my_dictionary)

# key 들만 출력
print(my_dictionary.keys())

# value 들만 출력
print(my_dictionary.values())

# key 와 value 쌍으로 출력
print(my_dictionary.items())

# 모든 dictionary 값 삭제
my_dictionary.clear()
print(my_dictionary)

'''
출력 결과

hi
{'key_3': 'hi', 'key_6': 'bye', 'key_4': 'goodbye'}
{'key_3': 'hi', 'key_6': 'bye'}
dict_keys(['key_3', 'key_6'])
dict_values(['hi', 'bye'])
dict_items([('key_3', 'hi'), ('key_6', 'bye')])
{}
'''

이런식으로 쓸 수 있습니다.

 

마지막으로 반복문을 활용하여 딕셔너리 자료구조를 사용해 보겠습니다

scores={"수학":100, "영어":40, "물리":100}
for sub,score in scores.items():
    print(sub.ljust(8),str(score).rjust(4),sep=":") 
# rjust와 ljust는 문자열에만 적용가능하기 때문에 score 값을 string 자료형으로 변환해 주었다.
# sep은 ,로 구분되어 있는 문자 사이를 구분하는 문자를 지정할 수 있음.
# ljust(8) 는 8만큼의 공간을 확보하고 왼쪽 정렬
# rjust(4) 는 4만큼의 공간을 확보하고 오른쪽 정렬 

for i in range (10):
    print("번호 :",str(i).zfill(3)) 
# zfill : 3자리를 확보한 후 빈 공간은 0으로 채워준다.

'''
출력 결과

수학      : 100
영어      :  40
물리      : 100
번호 : 000
번호 : 001
번호 : 002
번호 : 003
번호 : 004
번호 : 005
번호 : 006
번호 : 007
번호 : 008
번호 : 009
'''

 

반응형
Comments