■ 딕셔너리 ( Dictionary)

=> 키(key):값(value) 이 쌍을 이루어 하나의 항목으로 저장되는 자료형
=> 키와 값은 콜론(:)으로 구분한다.
=> 중괄호{}안에 콤마(,)로 구분하여 항목을 저장한다.
=> cf) memu = {'김밥':2000, '떡볶이':2500, ...}

 

 

 딕셔너리 생성 방법

=> 딕셔너리명 = {키1:값1, 키2:값2, ...}

menu = {'김밥':2000, 
        '떡볶이':2500, 
        '어묵':2000, 
        '튀김':3000}
print(menu)

{'김밥': 2000, '떡볶이': 2500, '어묵': 2000, '튀김': 3000}

 


=> 딕셔너리명 = dict(키1=값1, 키2=값2, ...)

# key에 따옴표를 쓰지않는 점에 주의
menu1 = dict(김밥=2000, 떡볶이=2500, 어묵=2000, 튀김=3000)
print(menu1)

{'김밥': 2000, '떡볶이': 2500, '어묵': 2000, '튀김': 3000}

 


=> 딕셔너리명 = dict(zip(key리스트,value리스트))

 # zip 함수를 이용하여 딕셔너리 만들기
key_list = ['김밥','떡볶이','어묵','튀김']
value_list = [2000,2500,2000,3000]

menu2 = dict(zip(key_list,value_list))
print(menu2)

{'김밥': 2000, '떡볶이': 2500, '어묵': 2000, '튀김': 3000}

 


=> 딕셔너리명 = dict( [(키1,값1),(키1,값2), ... ] )   → 튜플리스트로 딕셔너리 만들기

menu3 = dict([('김밥',2000),('떡볶이',2500),('어묵',2000),('튀김',3000)])
print(menu3)

{'김밥': 2000, '떡볶이': 2500, '어묵': 2000, '튀김': 3000}

 


=> 딕셔너리명 = dict({키1:값1, 키2:값2, ...})

menu4 = dict({'김밥':2000, 
        '떡볶이':2500, 
        '어묵':2000, 
        '튀김':3000})
print(menu4)

{'김밥': 2000, '떡볶이': 2500, '어묵': 2000, '튀김': 3000}

 

 

 딕셔너리에 사용할 수 있는 자료형

 

=> 딕셔너리의 value에는 모든 자료형을 혼합하여 사용할 수 있다. (변경 O, 중복 O)

person = {'name':'james', # value:문자열
         '나이':25,       # value:정수
         '키':178.8,      # value:실수
         '시력':(1.0,1.0), # value:튜플
         '취미':['운동','독서'] # value:리스트
         }
         
print(person)

{'name': 'james', '나이': 25, '키': 178.8, '시력': (1.0, 1.0), '취미': ['운동', '독서']}

 

 

=> 딕셔너리의 key에는 숫자,문자열,부울형,튜플만 사용할 수 있다. (변경 X, 중복 X)

number = 7

dict1 = {
    100:'hundred',
    True:'참',
    False:'거짓',
    (1,3):'학년,반',
    number:'번호'
}
print(dict1)

{100: 'hundred', True: '참', False: '거짓', (1, 3): '학년,반', 7: '번호'}

 

 

☞  중복된 'key'를 사용하여 딕셔너리를 만든다면?

person = {'name':'james',
         '나이':25,
          '나이':30,
         '키':178.8,
         '시력':(1.0,1.0),
         '취미':['운동','독서']
         }
         
print(person)

{'name': 'james', '나이': 30, '키': 178.8, '시력': (1.0, 1.0), '취미': ['운동', '독서']}

--> 중복된 key가 있으면 중복된 항목 중에 한가지만 나오게된다.

 

 

 딕셔너리 값(value)에 접근하기

=> 인덱스가 아닌 키(key)로 자료에 접근한다.
=> 딕셔너리명[key]   --> 존재하지 않는 키로 접근하면 에러발생
=> 딕셔너리명.get(key,msg)  --> 존재하지 않는 키로 접근하는 경우 msg를 가져온다

 

◎  딕셔너리 값 추출하기

person = {'name':'james',
         '나이':25,
          '나이':30,
         '키':178.8,
         '시력':(1.0,1.0),
         '취미':['운동','독서']
         }
         
# 딕셔너리명[key]
print(person['나이'])

30

 

print(person['몸무게'])

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
Input In [23], in <cell line: 1>()
----> 1 person['몸무게']
KeyError: '몸무게'

 

# 딕셔너리에 키 존재여부 확인
print('몸무게' in person)

False

 

# 딕셔너리명.get(key,msg) 사용해보기
print(person.get('나이'))

30

 

print(person.get('몸무게'))

--> 존재하지 않는 키로 추출 시도해도 오류가 발생하지 않는다.

 

 

print(person.get('몸무게','몸무게가 존재하지 않습니다'))

몸무게가 존재하지 않습니다

 

 

■ 딕셔너리 키(key), 값(value)을 리스트 형태로 가져오기

=> 딕셔너리.keys() -> 키만 리스트 형태로 받아서 사용

scores = {'kor':100, 'eng':90, 'math':80}

print(scores.keys())
# 완전한 리스트는 아니고, dict함수의 객체를 불러와 리스트로써 사용가능

dict_keys(['kor', 'eng', 'math'])

 


=> 딕셔너리.values() -> 값만 리스트 형태로 받아서 사용

print(scores.values())

dict_values([100, 90, 80])

 


=> 딕셔너리.items() -> (키,값)을 리스트형태로 받아서 사용 

print(scores.items())

dict_items([('kor', 100), ('eng', 90), ('math', 80)])

 

 

☞  for문에서 딕셔너리 key, value 사용해보기

scores = {'kor':100, 'eng':90, 'math':80}

for i in scores.keys():
    print(i,end =" ")
print()    

for i in scores:   # 키만 가져온다
    print(i,end =" ")
print()

for i in scores.values():
    print(i,end =" ")
print()

for i in scores.items():   # for문으로 딕셔너리의 key, value 출력
    print(i,end =" ")

kor eng math 
kor eng math 
100 90 80 
('kor', 100) ('eng', 90) ('math', 80) 

 

 

scores = {'kor':100, 'eng':90, 'math':80}

for k,v in scores.items():
    print(k,v)   # k는 키값, v는 밸류값

kor 100
eng 90
math 80

 

 

☞  딕셔너리 정렬하기

scores = {'kor':100, 'eng':90, 'math':80}

# 키 정렬하기
sorted(scores.keys())

# 값 정렬하기
sorted(scores.values())

# 키, 값 정렬하기
sorted(scores.items())   # key를 기준으로 정렬

[('eng', 90), ('kor', 100), ('math', 80)]

==> .sort()는 지원하지 않음
==> scores.keys().sort()  -> 오류가 난다.
==> 리스트와 유사하게 사용될 수 있지만, **리스트함수 sort()는 지원하지 않는다.

'Python 기초 공부' 카테고리의 다른 글

함수 만들기와 사용  (0) 2023.02.24
딕셔너리(Dictionary) 활용해보기  (0) 2023.02.20
리스트의 활용과 연습  (0) 2023.02.19
인덱싱 / 슬라이싱 / 리스트 변경  (0) 2023.02.19
리스트와 튜플  (2) 2023.02.18

+ Recent posts