본문 바로가기
Python/Basic

[파이썬, Python] 자료구조(Data Structure) - 3️⃣ 딕셔너리(Dictionary, dict)

by coding-choonsik 2023. 3. 8.
728x90
반응형
SMALL

1. 딕셔너리(Dictionary)

  • <class 'dict'>
  • 대응관계를 나타내는 자료형으로 key와 value라는 것을 한 쌍으로 갖는 형태
  • 하나의 딕셔너리의 key는 중복될 수 없음
  • 하나의 딕셔너리의 value는 중복될 수 있음

1-1. 딕셔너리 만들기

변수 = {key1:value1, key2:value2, ...}

 

 # 빈 딕셔너리 생성
dic1 = {}  
print(dic1)
>>> {}
print(type(dic1))
>>> <class 'dict'>
# key와 value값으로 딕셔너리 만들기
dic2 = {1:'김사과', 2:'반하나', 3:'오렌지', 4:'이메론'}
print(dic2)
>>> {1: '김사과', 2: '반하나', 3: '오렌지', 4: '이메론'}
# value값에 여러 요소를 담을 때는 대괄호로 감쌈
dic4 = {'num':[1,2,3,4], 'user_id':['apple','banana'], 'name':['김사과','반하나'], 'hp':['010-1111-1111', None]}

print(dic4)
>>> {'num': [1, 2, 3, 4], 'user_id': ['apple', 'banana'], 'name': ['김사과', '반하나'], 'hp': ['010-1111-1111', None]}

1-2. key를 통해 value값 찾기

 

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

print(dic2[1])   # index번호가가 아닌 key
>>> 김사과
print(dic2[4])
>>> 이메론


# key값이 문자열일 경우
dic3 = {'num':1, 'user_id':'apple', 'name':'김사과', 'hp':'010-1111-1111'}

print(dic3['num'])
>>> 1
print(dic3['user_id'])
>>> apple
print(dic3['hp'])
>>> 010-1111-1111

1-4. 딕셔너리의 데이터 추가 및 삭제

1) 데이터 추가

  • key의 데이터는 중복을 허용하지 않음
  • value값은 중복 허용
dic4 = {1:'apple'}
print(dic4)
>>> {1: 'apple'}

dic4[100] = 'apple'
print(dic4)
>>> {1: 'apple', 100: 'apple'}   # value는 중복 가능

dic4[50] = 'melon'
print(dic4)
>>> {1: 'apple', 100: 'apple', 50: 'melon'}

 

 

2) 데이터 삭제

  • key값으로 value 데이터를 삭제
    • del 
    • pop()
dic4 = {1: 'apple', 100: 'apple', 50: 'melon'}

# del 사용
del dic4[1]
print(dic4)
>>> {100: 'apple', 50: 'melon'}

# pop 사용
dic4.pop(100)
print(dic4)
>>> {50: 'melon'}

2. 딕셔너리 함수

2-1. keys()

  • key값을 리스트로 반환
dic3 = {'num':1, 'user_id':'apple', 'name':'김사과', 'hp':'010-1111-1111'}

print(dic3.keys())
>>> dict_keys(['num', 'user_id', 'name', 'hp'])

2-2. values()

  • value값을 리스트를 반환
dic3 = {'num':1, 'user_id':'apple', 'name':'김사과', 'hp':'010-1111-1111'}

print(dic3.values())
>>> dict_values([1, 'apple', '김사과', '010-1111-1111'])

2-3. items()

  • key와 value를 한 쌍으로 묶는 튜플을 반환
dic3 = {'num':1, 'user_id':'apple', 'name':'김사과', 'hp':'010-1111-1111'}

print(dic3.items())
>>> dict_items([('num', 1), ('user_id', 'apple'), ('name', '김사과'), ('hp', '010-1111-1111')])

2-4. get()

  • get(key, key값이 존재하지 않을 경우 대체할 값)
  • key를 이용해서 value값을 반환
  • 존재하지 않는 key 값 입력 시 None을 반환
dic3 = {'num':1, 'user_id':'apple', 'name':'김사과', 'hp':'010-1111-1111'}

# key를 통해 value값 반환
print(dic3['user_id'])
>>> apple
print(dic3['age'])
>>> KeyError: 'age'


# get()을 통한 value값 반환
print(dic3.get('user_id'))
>>> apple
print(dic3.get('age')) 
>>> None      # None도 객체: 없다라는걸 알려주는 객체
print(dic3.get('age', '나이를 알 수 없음'))
>>> 나이를 알 수 없음

2-5. in 

  • 파이썬 기본함수
  • key가 딕셔너리 안에 있을 경우 True, 없을 경우  False를 반환
dic3 = {'num':1, 'user_id':'apple', 'name':'김사과', 'hp':'010-1111-1111'}

print('name' in dic3) 
>>> True
print('age' in dic3)   
>>> False

3. 반복문을 이용한 딕셔너리 활용

  • 반복문을 통해 key값을 출력해보자.
dic3 = {'num':1, 'user_id':'apple', 'name':'김사과', 'hp':'010-1111-1111'}

# 키값만 복사됨
# 첫번째 방법
for i in dic3:
  print(i)
>>> 
num
user_id
name
hp

# 두번째 방법
for i in dic3.keys():
  print(i)

  • 반복문을 통해 value값만 출력해보자.
# value값만 복사
# 첫번째 방법
for i in dic3.values():
  print(i) 
>>> 
1
apple
김사과
010-1111-1111


# 두번째 방법
for i in dic3:    # key값만 복사
  print(dic3[i])  # key값을 이용한 value 값 
>>>
1
apple
김사과
010-1111-1111

# 세번째 방법, get()
for i in dic3:
  print(dic3.get(i))
>>> 
1
apple
김사과
010-1111-1111

  • 반복문과 조건문을 통해 각 key값을 순회하면서 key에 해당하는 값 중 'apple'이 있는지 확인해보자.
dic3 = {'num':1, 'user_id':'apple', 'name':'김사과', 'hp':'010-1111-1111'} 

for i in dic3:
  if dic3[i] == 'apple':
    print('찾았습니다')
  else:
    print('찾지못함')
    
>>> 
찾지못함
찾았습니다
찾지못함
찾지못함

 

728x90
반응형
LIST