1. 딕셔너리
파이썬의 딕셔너리는 키-값 쌍을 저장하는 변경 가능한(mutable) 컬렉션입니다.
요약
dict(딕셔너리)
한 쌍으로 저장되어 관리한다.
len()를 사용하면 한 쌍을 1로 카운트한다.
* 키 - 중복 불가능
* 값 - 중복 가능
키 값을 주면 그 키의 값을 가지고 온다.
# 키 해시테이블 값
# 키로 정보를 요청하면 해시테이블이 값을 찾아와준다.
dict 선언
dict명{키: 값, 키: 값, 키: 값, ...}
dict 사용
-추가, 수정
: 추가와 수정이 동일한 코드이다.
dict명[키] = 값
키 값이 기존에 있으면 수정이고, 기존에 없으면 추가이다.
-삭제
del dict명[키]
-검사
키 in dict명 : 키가 있으면 참
키 not in dict명 : 키가 없으면 참
1. 생성
딕셔너리는 중괄호 {}를 사용하여 생성하고, 키-값 쌍들은 쉼표 ,로 구분됩니다. 각 키-값 쌍은 콜론 :으로 구분됩니다.
- 키는 중복 불가능 (set)와 비슷
- 값은 중복 가능 (dict)과 비슷
dict 선언
dict명{키: 값, 키: 값, 키: 값, ...}
dic1 = {}
print(dic1)
print(type(dic1))
dic2 = {1: '푸바오', 2: '아이바오', 3: '러바오', 4: '루이바오'}
print(dic2)
print(dic2[2]) # 딕셔너리에서는 대괄호 안에는 키가 들어가야함 => 값(value) 출력
print(dic2[3])
dic3 = {'no':1, 'userid':'apple', 'name':'푸바오', 'hp':'010-1111-1111'} # 키는 중복x 문자 및 숫자도 가능
print(dic3)
print(dic3['no'])
print(dic3['name'])
{}
<class 'dict'>
{1: '푸바오', 2: '아이바오', 3: '러바오', 4: '루이바오'}
아이바오
러바오
{'no': 1, 'userid': 'apple', 'name': '푸바오', 'hp': '010-1111-1111'}
1
푸바오
2. 추가 및 수정 (변경가능)
- 딕셔너리는 변경 가능합니다.
- 따라서, 딕셔너리에 키-값 쌍을 추가하거나 제거하거나, 기존의 키의 값을 변경할 수 있습니다.
dict 사용
-추가, 수정
** 추가와 수정이 동일한 코드이다.
dict명[키] = 값
키 값이 기존에 있으면 수정이고, 기존에 없으면 추가이다.
# 데이터에 없는 키 값을 대괄호에 넣고 값을 입력하면 데이터가 추가된다. (데이터에 순서가 없다)
# 데이터에 없는 키 값을 대괄호에 넣고 값을 입력하면 데이터가 추가된다. (데이터에 순서가 없다)
dic4 = {1:'apple'}
print(dic4)
dic4[100] = 'banana'
print(dic4)
dic4[50] = 'orange'
print(dic4)
del dic4[100]
print(dic4)
{1: 'apple'}
{1: 'apple', 100: 'banana'}
{1: 'apple', 100: 'banana', 50: 'orange'}
{1: 'apple', 50: 'orange'}
# 존재하는 키 값에 새로운 값을 넣어주면 값이 대체된다.(수정된다)
# 존재하는 키 값에 새로운 값을 넣어주면 값이 대체된다.(수정된다)
dic5 = {'no':1, 'userid':'apple', 'name':'푸바오', 'hp':'010-1111-1111'}
dic5['no'] = 2
print(dic5)
{'no': 2, 'userid': 'apple', 'name': '푸바오', 'hp': '010-1111-1111'}
3. 키, 값의 제약
- 딕셔너리의 키는 변경 불가능한(immutable) 타입이어야 합니다.
- 예를 들어, 문자열, 정수, 튜플은 딕셔너리의 키로 사용할 수 있지만, 리스트는 딕셔너리의 키로 사용할 수 없습니다. 하지만 딕셔너리의 값은 어떤 타입이든 상관없습니다.
dic3 = {'no':1, 'userid':'apple', 'name':'푸바오', 'hp':'010-1111-1111'} # 키는 중복x 문자 및 숫자도 가능
dic5['no'] = 2
print(dic5)
dic3['점수'] = [90, 100, 50] # 값에 리스트 추가
print(dic3)
dic3[(1,2,3)] = ('가','나','다') # 키(튜플) : 값(튜플 추가)
print(dic3)
#dic3[[1, 2, 3]] = ['라', '마', '바'] #키는 변경 불가능한(immutable) 타입. 리스트가 될 수 없다
#print(dic3)
dic3['과일'] = {'사과':'🍎', '딸기':'🍓', '앵두':'🍒'} # '과일' 키에 값:딕셔너리도 추가 가능
print(dic3)
{'no': 2, 'userid': 'apple', 'name': '푸바오', 'hp': '010-1111-1111'}
{'no': 1, 'userid': 'apple', 'name': '푸바오', 'hp': '010-1111-1111', '점수': [90, 100, 50]}
{'no': 1, 'userid': 'apple', 'name': '푸바오', 'hp': '010-1111-1111', '점수': [90, 100, 50], (1, 2, 3): ('가', '나', '다')}
{'no': 1, 'userid': 'apple', 'name': '푸바오', 'hp': '010-1111-1111', '점수': [90, 100, 50], (1, 2, 3): ('가', '나', '다'), '과일': {'사과': '🍎', '딸기': '🍓', '앵두': '🍒'}}
4. 함수와 메서드
딕셔너리는 여러 함수와 메소드를 가지고 있습니다.
# len(): 딕셔너리의 길이(키-값 쌍의 개수)를 구할 수 있는 함수
# len(): 딕셔너리의 길이(키-값 쌍의 개수)를 구할 수 있는 함수
dic3 = {'no':1, 'userid':'apple', 'name':'푸바오', 'hp':'010-1111-1111'}
print(len(dic3)) # 키와 값이 하나의 쌍
4
# keys(): 딕셔너리의 모든 키를 반환하는 메서드
# keys(): 딕셔너리의 모든 키를 반환하는 메서드
dic3 = {'no':1, 'userid':'apple', 'name':'푸바오', 'hp':'010-1111-1111'}
print(dic3.keys()) # 키만 뽑아서 리스트로 출력
dict_keys(['no', 'userid', 'name', 'hp'])
# values(): 딕셔너리의 모든 값을 반환하는 메서드
# values(): 딕셔너리의 모든 값을 반환하는 메서드
dic3 = {'no':1, 'userid':'apple', 'name':'푸바오', 'hp':'010-1111-1111'}
print(dic3.values())
dict_values([1, 'apple', '푸바오', '010-1111-1111'])
# items(): 딕셔너리의 모든 키-값 쌍을 반환하는 메서드 (튜플로 반환)
# items(): 딕셔너리의 모든 키-값 쌍을 반환하는 메서드 (튜플로 반환)
dic3 = {'no':1, 'userid':'apple', 'name':'푸바오', 'hp':'010-1111-1111'}
print(dic3.items())
dict_items([('no', 1), ('userid', 'apple'), ('name', '푸바오'), ('hp', '010-1111-1111')])
# get(): 특정 키의 값을 반환. 만약 그 키가 딕셔너리에 없으면, None을 반환하는 메서드
# get(): 특정 키의 값을 반환. 만약 그 키가 딕셔너리에 없으면, None을 반환하는 메서드
print(dic3.get('userid'))
print(dic3.get('age'))
print(dic3.get('userid', '알 수 없음'))
print(dic3.get('age', '알 수 없음')) # get 사용시 존재하지 않는 키에 값을 입력하면 입력한 값이 출력
dic3 = {'no':1, 'userid':'apple', 'name':'푸바오', 'hp':'010-1111-1111'}
print(dic3['userid'])
#print(dic3['age']) # 딕셔너리에 존재하지 않는 키를 입력하면 에러 KeyError: 'age'
apple
None
apple
알 수 없음
apple
# pop(): 특정 키의 값을 제거하고 반환. 만약 그 키가 딕셔너리에 없으면, KeyError가 발생하는 메서드
# pop(): 특정 키의 값을 제거하고 반환. 만약 그 키가 딕셔너리에 없으면, KeyError가 발생하는 메서드
dic3 = {'no':1, 'userid':'apple', 'name':'푸바오', 'hp':'010-1111-1111'}
print(dic3.pop('hp'))
print(dic3)
010-1111-1111
{'no': 1, 'userid': 'apple', 'name': '푸바오'}
5. 멤버십 테스트
in 연산자를 사용하여 딕셔너리에 특정 키가 있는지 확인할 수 있습니다.
# in : 딕셔너리 안에 키 존재 여부 확인
dic3 = {'no':1, 'userid':'apple', 'name':'푸바오', 'hp':'010-1111-1111'}
print('hp' in dic3)
print('age' in dic3)
True
False
'컴퓨터 비전 > 파이썬 기초' 카테고리의 다른 글
9. 제어문 - 조건문 (2) | 2023.12.08 |
---|---|
8. 파이썬 연산자 (2) | 2023.12.08 |
6. 파이썬 컬렉션 타입 - 세트 (0) | 2023.12.07 |
5. 파이썬 컬렉션 타입 - 튜플 (2) | 2023.12.07 |
4. 파이썬 컬렉션 타입 - 리스트 (2) | 2023.12.07 |