[AIVLE SCHOOL] 데이터 다루기(6) - 딕셔너리

춤추는 머쉬룸·2024년 9월 6일

AIVLE SCHOOL 6기

목록 보기
9/80
post-thumbnail

9/6 4, 5, 6, 7세션

A. 딕셔너리{:}

  • 순서가 없다.
  • 'key' : 'value' 형태를 가진다.

TIP! 딕셔너리 요소 순서
3.6 까지는 정렬되지 않은 자료구조였음. 3.7부터는 선언한 순서대로 유지됨
하지만 인덱싱, 슬라이싱은 불가능

A-1. 딕셔너리 선언

  • 리스트나 튜플을 Value로 가질 수 있음
  • 튜플은 key 가 되지만, 리스트는 key 가 안됨. 리스트는 변경 가능성이 있기 때문
  • key 는 중복 불가능, 변경 불가능
  • 만약 같은 key로 여러번 넣은 경우, 가장 마지막의(최신의) value로 변경됨
> word = {'love' : '사랑', 'happy' : '행복', 'dream': '꿈'}
> member2 = {'이름': '홍길동',
           '취미': ['독서', '여행', '걷기']}

A-2. 딕셔너리 검색

변수명[key]

> member['이름']
홍길동

B. 딕셔너리 자료형 변환

  • dict() 함수를 사용해 key:value 형태를 가질 수 있는 자료형을 딕셔너리로 변환

B-1) 리스트 -> 딕셔너리

# 리스트 만들기
> members = [['홍길동', 100], ['일지매', 90], ['한여인', 90], ['강우동', 95]]

# 딕셔너리로 변환
> member_dic = dict(members)

# 확인
> member_dic

{'홍길동': 100, '일지매': 90, '한여인': 90, '강우동': 95}

쌍으로 된 리스트 형태가 아니라면?

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[15], line 5
      2 members = [['홍길동', 100, 200], ['일지매', 90], ['한여인', 90], ['강우동', 95]]
      4 # 딕셔너리로 변환
----> 5 member_dic = dict(members)
      7 # 확인
      8 member_dic
ValueError: dictionary update sequence element #0 has length 3; 2 is required

B-2) 튜플 -> 딕셔너리

# 튜플 만들기
> members = (('홍길동', 100), ('일지매', 90), ('한여인', 90), ('강우동', 95))

# 딕셔너리로 변환
> member_dic = dict(members)

# 확인
> member_dic

{'홍길동': 100, '일지매': 90, '한여인': 90, '강우동': 95}

B-3) in 연산자

  • in 연산자를 사용해 해당 key 가 있는지 확인 가능
print('이름' in member)             # True
print('홍길동' in member)           # False
print('여행' in member['취미'])     # True

C. 딕셔너리 변경, 추가, 삭제

C-1) 변경 및 추가

  • key 로 찾아 변경함
  • 해당 key 가 없으면 추가함
  • 변수명[key] = 바꿀 value
# 딕셔너리 요소 값 변경(나이 = 30)
> member['나이'] = 30

{'이름': '홍길동', '나이': 30}

# 딕셔너리에 요소 추가(취미 = 독서, 여행)
> member['취미'] = ['독서', '여행']

{'이름': '홍길동', '나이': 30, '취미': ['독서', '여행']}

C-2) 삭제

  • del 변수명[key] : key로 요소 삭제
  • pop(key) : key로 요소 삭제 후 삭제한 요소의 value 반환
  • popitem() : 키 지정 없이 마지막 요소부터 삭제 / 삭제된 요소의 key 와 value 를 튜플 형태로 반환 (순서가 없다고는 하지만, Hash 값으로 관리가 되어 마지막 요소를 삭제할 수 있음)
  • 변수명 = {} : 모든 요소 삭제

D. 딕셔너리 관련 메서드

D-1) Key 확인

변수명.keys()


> member.keys()
dict_keys(['이름', '취미']) # type 은 dict_keys

> list(member.keys())
['이름', '취미']

D-2) Value 확인

변수명.values()

D-3) Key, Value 확인

변수명.items()

  • 모든 key 와 value 를 (key, value) 튜플 형태로 갖는 dict_items 개체 반환

D-4) key 로 Value 찾기

변수명.get(key)
변수명.get(key, 없을 때 대신 출력할 할 값)

  • Key로 Value를 찾을 수 없을 때 대신 반환할 값을 지정 가능
  • 변수명[key] 는 해당 key 가 없으면 에러남

0개의 댓글