1. 딕셔너리 자료형
→ 딕셔너리는 집합과 마찬가지로 중괄호 {}를 사용해 선언
→ 하지만 {k1 : v1, k2 : v2, k3 : v3} 형태를 가지므로 집합과 구분
→ 딕셔너리는 순서의 의미가 없으며, 키를 사용해 값을 확인
1) 딕셔너리 만들기
- Key가 될 수 없는 리스트 → key는 변경되면 안되기 때문에 리스트는 key가 될 수 없음
- dict() 함수를 이용해 만들 수 있음
# 다양한 정보를 갖는 딕셔너리
member1 = {'이름':'홍길동',
'나이': 20,
'지역':'서울'}
# Value가 리스트인 딕셔너리
member2 = {'이름': '홍길동',
'취미': ['독서', '여행', '걷기']}
# 딕셔너리 만들기
score = {'홍길동': 100,
'한여인': 90,
'홍길동': 95,
'한여인': 90,
'한국인': 75,
'일지매': 90} # {'홍길동': 95, '한여인': 90, '한국인': 75, '일지매': 90}
# dict 함수로 만들기1
member3 = dict(이름='홍길동', 나이=20, 지역='서울')
# {'이름': '홍길동', '나이': 20, '지역': '서울'}
2) 딕셔너리로 자료형 변환
- [key, value], (key, value) 형태를 갖는 리스트와 튜플은 딕셔너리로 변환 가능
# 리스트 만들기
members = [['홍길동', 100], ['일지매', 90]]
member_dic = dict(members) # {'홍길동': 100, '일지매': 90}
3) 딕셔너리 조회
- 딕셔너리는 요소 순서가 없으므로 인덱싱, 슬라이싱 불가능
- Key를 사용해 Value를 찾는 방식으로 조회
- in 연산자를 통해 해당 key가 있는지 확인 가능
member = {'이름': '홍길동',
'취미': ['독서', '여행', '걷기']}
print(member['이름']) # 홍길동
print(member['취미']) # ['독서', '여행', '걷기']
# 데이터 존재 여부 확인
print('이름' in member) # True
print('홍길동' in member) # False
print('여행' in member['취미']) # True
4) 딕셔너리 변경, 추가와 삭제
a. 변경, 추가
member = {'이름': '홍길동',
'나이': 20}
member['나이'] = 30 # {'이름': '홍길동', '나이': 30}
- 없는 Key로 변경하면 Key : Value 형태로 추가
member['취미'] = ['독서', '여행']
# {'이름': '홍길동', '나이': 30, '취미': ['독서', '여행']}
b. 삭제
- del 문으로 key를 지정해 해당 요소를 삭제
- pop() 메소드를 사용하면 key를 지정해 요소를 사제 가능 → 그리고 삭제된 요소의 value를 반환
- popitem() 메소드로 key 지정없이 임의의 요소를 삭제 → 그리고 삭제된 요소의 key와 value를 튜플 형태로 반환
member = {'이름': '홍길동',
'나이': 20,
'지역':'서울',
'성별': 'M',
'등급': 'Gold'}
del member['나이'] # {'이름': '홍길동', '지역': '서울', '성별': 'M', '등급': 'Gold'}
del_member = member.pop('지역')
print(del_member) # 서울
print(member) # {'이름': '홍길동', '성별': 'M', '등급': 'Gold'}
del_member = member.popitem()
print(del_member) # ('등급', 'Gold')
print(member) # {'이름': '홍길동', '성별': 'M'}
5) 딕셔너리 관련 메소드
a. Key, Value 확인
- keys() : key 정보를 확인
- values() : value 정보를 확인
- items() : key, value 정보를 (key, value) 형태로 갖는 개체를 반환
b. 찾기
- get(key, 대신할 값) : key를 지정해 value를 찾을 수 있음 → 찾을 수 없을 때 대신 표시할 값을 지정할 수 있음