본문 바로가기
인공지능/파이썬 기초

컬렉션 타입- 딕셔너리

by hyunji00pj 2024. 9. 26.

KDT_4기 파이썬 기초 0924(4)

2024.09.24 수업 내용 복습일기 네번째

 

세트에 이어서 컬렉션타입 딕셔너리에 대해서 알아보겠다.

1. 딕셔너리

파이썬의 딕셔너리는 키-값 쌍을 저장하는 변경 가능한(mutable) 컬렉션입니다.

 

 

1. 생성

딕셔너리는 중괄호 {} 사용하여 생성하고, - 쌍들은 쉼표 , 구분됩니다.  - 쌍은 콜론 :으로 구분됩니다.

dic1 = {}
print(dic1)
print(type(dic1))

dic2 = {1:'김사과',2:'반하나',3:'오렌지',4:'이메론'}
print(dic2)
print(type(dic2))

 

 

2. 변경 가능

딕셔너리는 변경 가능합니다. 따라서, 딕셔너리에 - 쌍을 추가하거나 제거하거나, 기존의 키의 값을 변경할  있습니다.

 

키가 중복 저장되면 뒤의 값으로 재저장합니다

dic2 = {1:'김사과',2:'반하나',3:'오렌지',2:'이메론'}
#키가 중복되면 재저장
print(dic2)
print(type(dic2))

 

딕셔너리의 키를 활용해 값을 불러들입니다.

dic2 = {1:'김사과',2:'반하나',3:'오렌지',4:'이메론'}
print(dic2[2])
print(dic2[4])

dic3 = {'no':1,'userid':'apple','name':'김사과','hp':'010-1111-1111'}
print(dic3)
print(dic3['no'])
print(dic3['userid'])
print(dic3['name'])
print(dic3['hp'])

딕셔너리에 키 - 값을 추가할 수 있습니다

키가 중복될 시 값이 변경됩니다

dic4 = {1:'apple'}
print(dic4)

dic4[100] ='banana'
print(dic4)

dic4[50] = 'orange'
print(dic4)

dic4[100] ='melon'
print(dic4)

 

딕셔너리는 del함수를 통해 키를 지정해 삭제할 수 있습니다.

del dic4[100]
print(dic4)

 

3. 키, 값의 제약

딕셔너리의 키는 변경 불가능한(immutable) 타입이어야 합니다. 예를 들어, 문자열, 정수, 튜플은 딕셔너리의 키로 사용할  있지만, 리스트는 딕셔너리의 키로 사용할  없습니다. 하지만 딕셔너리의 값은 어떤 타입이든 상관없습니다.

dic3 = {'no':1,'userid':'apple','name':'김사과','hp':'010-1111-1111'}
print(dic3)

#요소 추가
dic3['gender'] = 'female'
print(dic3)

#요소의 값 변경
dic3['no'] = 10
print(dic3)

dic3['score'] = [100,90,40]
print(dic3)

# dic3[[10,20,30]] = ['십','이십','삼십']TypeError: unhashable type: 'list'

dic3[(10,20,30)] = ['십','이십','삼십']#키도 컬렉션 타입으로 가능하지만 다만 변경 불가능한 컬렉션을 사용해야함
print(dic3)

dic3['과일'] = {'사과':'🍎','딸기':'🍓','수박':'🍉'}
print(dic3)

결과값 >>>

{'no': 1, 'userid': 'apple', 'name': '김사과', 'hp': '010-1111-1111'}
{'no': 1, 'userid': 'apple', 'name': '김사과', 'hp': '010-1111-1111', 'gender': 'female'}
{'no': 10, 'userid': 'apple', 'name': '김사과', 'hp': '010-1111-1111', 'gender': 'female'}
{'no': 10, 'userid': 'apple', 'name': '김사과', 'hp': '010-1111-1111', 'gender': 'female', 'score': [100, 90, 40]}
{'no': 10, 'userid': 'apple', 'name': '김사과', 'hp': '010-1111-1111', 'gender': 'female', 'score': [100, 90, 40], (10, 20, 30): ['십', '이십', '삼십']}
{'no': 10, 'userid': 'apple', 'name': '김사과', 'hp': '010-1111-1111', 'gender': 'female', 'score': [100, 90, 40], (10, 20, 30): ['십', '이십', '삼십'], '과일': {'사과': '🍎', '딸기': '🍓', '수박': '🍉'}}

 

2.딕셔너리의 메서드

 

1. 함수와 메서드

딕셔너리는 여러 함수와 메소드를 가지고 있습니다.

 

keys() : 딕셔너리의 모든 키를 반환합니다.

dic3 = {'no':1,'userid':'apple','name':'김사과','hp':'010-1111-1111'}
print(dic3)

#keys(): 딕셔너리의 모든 키를 반환
print(dic3.keys())

 

values() : 딕셔너리의 모든 값을 반환합니다.

dic3 = {'no':1,'userid':'apple','name':'김사과','hp':'010-1111-1111'}
print(dic3)

# values(): 딕셔너리의 모든 값을 반환
print(dic3.values())

 

items() : 딕셔너리의 모든 키 - 값을 튜플로 반환합니다.

dic3 = {'no':1,'userid':'apple','name':'김사과','hp':'010-1111-1111'}
print(dic3)

#items(): 딕셔너리의 모든 키-값을 튜플로 반환
print(dic3.items())

결과 값 >>>

{'no': 1, 'userid': 'apple', 'name': '김사과', 'hp': '010-1111-1111'}
dict_items([('no', 1), ('userid', 'apple'), ('name', '김사과'), ('hp', '010-1111-1111')])

 

get() : 특정 키에 대한 값을 반환합니다. 만약 키가 딕셔너리에 없으면 None을 반환합니다.

None 을 치환할 수 있는 문자열을 설정할 수도 있습니다.

dic3 = {'no':1,'userid':'apple','name':'김사과','hp':'010-1111-1111'}
print(dic3)

#get(): 특정 키에 대한 값을 반환.만약 키가 딕셔너리에 없으면 None을 반환
#None을 치환할 수 있는 문자열을 설정할 수 있음
print(dic3['userid'])
#print(dic3['gender'])KeyError: 'gender'
print(dic3.get('userid'))
print(dic3.get('gender'))
print(dic3.get('gender','성별 알수없음'))
print(dic3.get('name','이름 알수없음'))

 

pop() : 특정 키에 대한 값을 제거하고 제거된 값을 반환합니다. 만약 키가 없다면 에러가 납니다.

dic3 = {'no':1,'userid':'apple','name':'김사과','hp':'010-1111-1111'}
print(dic3)

#pop(): 특정 키에 대한 값을 제거하고 제거된 값을 반환. 만약 키가 없다면 에러.
temp = dic3.pop('hp')
print(dic3)
print(temp)

 

 

 

2. 멤버십 테스트

in 연산자를 사용하여 딕셔너리 특정 키가 있는지 확인할  있습니다.

dic3 = {'no':1,'userid':'apple','name':'김사과','hp':'010-1111-1111'}
print(dic3)

#in(): 디셔너리에 특정 키가 있는지 확인
print('hp' in dic3)
print('010-1111-1111' in dic3)

 

'인공지능 > 파이썬 기초' 카테고리의 다른 글

제어문 - 조건문  (14) 2024.09.29
연산자  (0) 2024.09.29
파이썬 컬렉션 타입 - 세트  (0) 2024.09.26
input 함수  (2) 2024.09.26
컬렉션 타입 튜플  (0) 2024.09.26