Python

[Python] 시퀀스 - 딕셔너리(dictionary)

디지몬진화 2024. 6. 14. 17:14

1.딕셔너리 알아보기

- 키(Key)와 값(Value)의 쌍으로 데이터를 저장하는 구조

- 중괄호 {}를 사용하여 정의

- 키와 값은 콜론(:)으로 구분하여 표현

 

2. 딕셔너리 특징

 

- 데이터를 입력한 순서대로 저장되지 않음 (파이썬 3.7부터는 입력한 순서 유지)

- 인덱스를 사용하여 요소에 접근 불가능

- 딕셔너리는 변경 가능한 자료구조 --> 요소를 추가, 삭제 , 수정하는 등의 작업

- 각 요소는 키와 값의 쌍으로 구성 

    키 : 고유한 값

    값 : 중복 가능

 

 

3. 딕셔너리 생성

- 중괄호 안에 항목을 쉼표로 분리시켜 나열

>>> d = {1: 'apple', 2: 'banana’}
# 사람들의 이름과 전화번호를 딕셔너리로 저장해보면 다음과 같이 될 것이다.
>>> contacts = {'Kim':'01012345678', 'Park':'01012345679', 'Lee':'01012345680' }

>>> contacts
{'Kim': '01012345678', 'Lee': '01012345680', 'Park': '01012345679’}
# 공백 딕셔너리는 { }로 생성한다.
>>> d = { }

 

4. 항목 접근하기

- ['키'] 또는 get() : 항목의 키를 사용하여 항목에 접근 

>>> contacts = {'Kim':'01012345678', 'Park':'01012345679', 'Lee':'01012345680' }
>>> contacts['Kim']
'01012345678'
# 숫자도 문자열로 처리한 이유 = 숫자 맨앞에 0이 오면 십진법으로 인식이 안됨

>>> contacts.get('Kim')
'01012345678'

#딕서너리 키 중에 Choi가 있으면 Choi의 값을 출력하고 없으면 010114를 출력
>>> number = contacts.get("Choi", "010114")    
>>> number
'010114'

>>> if "Kim" in contacts:
       print("키가 딕셔너리에 있음")

 

5. 항목 추가, 삭제 

# 추가
>>> contacts['Choi'] = '01056781234'
>>> contacts
{'Kim': '01012345678', 'Choi': '01056781234', 'Lee': '01012345680', 'Park':'01012345679’}
# 삭제
>>> contacts = {'Kim':'01012345678', 'Park':'01012345679', 'Lee':'01012345680' }
>>> contacts.pop("Kim")
'01012345678'
>>> contacts
{'Lee': '01012345680', 'Park': '01012345679'}

 

6. 항목 순회

>>> scores = { 'Korean': 80, 'Math': 90, 'English': 80}
>>> for key in scores:
        print(key, scores[key])

Korean 80
Math 90
English 80
>>> squares= {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
>>> 1 in squares
True
>>> 2 not in squares
True

 

 

7. 딕셔너리 함축

- 새로운 딕셔너리를 생성하는 간결한 방법

※ {} 안의 (key : value)와 for 문장으로 이루어짐

>>> triples = { x: x*x*x for x in range(6) }
>>> triples
{0: 0, 1: 1, 2: 8, 3: 27, 4: 64, 5: 125}

 

 

8. 딕셔너리 정렬

- 요소들을 특정 순서대로 저장하지 않음 (최종 순서는 알 수가 없다)

- sorted() : 딕셔너리 키 정렬하는 내장함수

>>> dic = { "bags": 1, "books": 5, "bottles": 4, "coins": 7, "cups": 2, "pens": 3 }
>>> dic
{'coins': 7, 'pens': 3, 'bottles': 4, 'books': 5, 'cups': 2, 'bags': 1}
>>> sorted(dic)
['bags', 'books', 'bottles', 'coins', 'cups', 'pens']

>>> sorted(dic.values())
[1, 2, 3, 4, 5, 7]

>>> sorted(dic, key=dic.__getitem__)
# [1, 2, 3, 4, 5, 7] 순서로 정렬된다.
['bags', 'cups', 'pens', 'bottles', 'books', 'coins']