본문 바로가기
코딩/파이썬

파이썬 - 딕셔너리

by Song1234 2024. 3. 14.

1. 딕셔너리

파이썬의 딕셔너리는 키-값 쌍을 저장하는 변경 가능한(mutable) 컬렉션이다.
키는 중복이 되지 않고, 키 안의 값은 중복이 가능하다.
딕셔너리의 키는 내부적으로 set타입으로 되어있다.

1-1. 중괄호{}를 이용하여 만들고 앞의 요소가 키값 콜론: 뒤에요소가 값이 된다.

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

결과:
{}
<class 'dict'>


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

결과:
{1: '김사과', 2: '반하나', 3: '오렌지', 4: '이메론'}
<class 'dict'>


print(dic2[2])
print(dic2[4])

결과:
반하나
이메론

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

결과:
{'no': 1, 'userid': 'apple', 'name': '김사과', 'hp': '010-1111-1111'}
1
김사과

 

 

키를 넣으면 값을 출력한다


1-2. 찾으려는 키가 없으면 새로 만들어 추가 해준다

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

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

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

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

결과:
{1: 'apple'}
{1: 'apple', 100: 'banana'}
{1: 'apple', 100: 'banana', 50: 'orange'}
{1: 'apple', 100: 'melon', 50: 'orange'}

 

 

 

set과 마찬가지로 순서가 없다.
중복된 키:값을 넣으면 해당 키의 값만 바뀌게 된다.


1-3. 삭제

del dic1[100]
print(dic1)

결과:
{1: 'apple', 50: 'orange'}

 

 

dle을 이용해 삭제를 할수있다.

 


1-4. 딕셔너리 에는 다양한 자료구조를 넣을수 있다

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

dic3['no'] = 10
print(dic3) #수정

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


#딕셔너리 안에는 다양한 자료구조를 넣을수 있다.
dic3 = {'no':1, 'userid':'apple', 'name':'김사과', 'hp':'010-1111-1111'}
print(dic3)

dic3['no'] = 10
print(dic3) #수정

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


#딕셔너리 안에는 다양한 자료구조를 넣을수 있다.
dic3['점수'] = [90, 100, 50]
print(dic3)

# dic3[[1, 2, 3]] = ['하나', '둘', '셋'] 키는 바뀌면 안돼기 때문에 키에 리스트는 사용할수 없다
# print(dic3)  TypeError: unhashable type: 'list'

dic3[(1, 2, 3)] = ['하나', '둘', '셋']#튜플은 변경이 안돼기 때문에 키 로 사용할수 있다
print(dic3)

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

결과:
{'no': 1, 'userid': 'apple', 'name': '김사과', 'hp': '010-1111-1111'}
{'no': 10, 'userid': 'apple', 'name': '김사과', 'hp': '010-1111-1111'}
{'no': 10, 'userid': 'apple', 'name': '김사과', 'hp': '010-1111-1111', 'gender': 'female'}
{'no': 10, 'userid': 'apple', 'name': '김사과', 'hp': '010-1111-1111', 'gender': 'female', '점수': [90, 100, 50]}
{'no': 10, 'userid': 'apple', 'name': '김사과', 'hp': '010-1111-1111', 'gender': 'female', '점수': [90, 100, 50], (1, 2, 3): ['하나', '둘', '셋']}
{'no': 10, 'userid': 'apple', 'name': '김사과', 'hp': '010-1111-1111', 'gender': 'female', '점수': [90, 100, 50], (1, 2, 3): ['하나', '둘', '셋'], '과일': {'사과': '🍎', '딸기': '🍓', '수박': '🍉'}}

 

 


2. 메서드

2-1. len()

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

결과:
4


2-2. keys(): 딕셔너리의 모든 키를 반환 해 준다.

print(dic3.keys())

결과:
dict_keys(['no', 'userid', 'name', 'hp'])

 


2-3. values(): 딕셔너리의 모든 값을 반환 해 준다.

print(dic3.values())

결과:
dict_values([1, 'apple', '김사과', '010-1111-1111'])

 


2-4. items(): 딕셔너리의 모든 키-값을 쌍(튜플)으로 반환 해 준다.

print(dic3.items())

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

 


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

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

print(dic3.get('userid')) 
print(dic3.get('age')) #None
print(dic3.get('age', '아이디를 알 수 없음'))

결과:
apple
apple
None
아이디를 알 수 없음

 

 

get을 사용하면 없는 키 를 불러도 에러가 나지 않고 None 으로 반환해준다. None 대신 특정 값을 사용할수 있다.

 


2-6. pop(): 특정 키에 대한 값을 제거하고 그 값을 반환 해 준다.

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

temp = dic3.pop('hp') 
print(dic3)
print(temp)
print(type(temp))

결과:
{'no': 1, 'userid': 'apple', 'name': '김사과', 'hp': '010-1111-1111'}
{'no': 1, 'userid': 'apple', 'name': '김사과'}
010-1111-1111
<class 'str'>

 

 

반환되는 타입은 딕셔너리가 아니며 이때 키 는 반환되지 않고 값만 저장해준다
키가 없다면 에러가 발생한다.

 


2-7. in() : 딕셔너리에 특정 키가 있는지 확인 할수 있는 메서드.

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

print('hp'in dic3) 
print('age'in dic3)

결과:
True
False

'코딩 > 파이썬' 카테고리의 다른 글

파이썬 제어문 - 조건문  (0) 2024.03.14
파이썬 - 연산자  (2) 2024.03.14
파이썬 - 세트  (0) 2024.03.14
파이썬 - 튜플  (0) 2024.03.13
파이썬 - 리스트  (0) 2024.03.13