자운최고지식인되기/파이썬 공부

4-2. 연속자료형 [이론 및 실습]

ssoy1206 2025. 4. 3. 18:32

연속자료형

Dictionary (딕셔너리)

d={'Eng':'space','Kor':'우주','Eng2':'earth','Kor2':'지구'}
print(d['Eng'])

d2={'a':1,'b':'2','c':'3'}
d2['a']

d2={'a':1,'b':'2','c':'3',4:'d'}
d2[4]

 

▸명칭처럼 사전형 자료나열 방식이 Dictionary
▸단어와 뜻의 한 쌍 조합처럼, 딕셔너리형 자료도 Key와 Value가 한 쌍으로 이루어진 형태
딕셔너리명={Key:Value, Key1:Value1, Key2:Value2, …} 형태로 작성
Key값과 Value값 둘 다 숫자형, 문자열 사용 가능하지만 문자 형태로 숫자를 출력하고 싶을 땐 반드시 작은따옴표 필요. 딕셔너리 자료형으로 변수를 설정할 때 Value는 list의 형태도 가능하다. (Key는 list 불가)
▸한 딕셔너리 안에서 키를 중복할 수 없음

 

딕셔너리 자료형을 사용하는데 적합한 데이터

💡
1. 쌍으로 이루어진 데이터 (ex. 지역명과 지역 대표 음식)

2. 다양한 속성을 가지는 하나의 객체 (ex. 온라인 쇼핑몰 고객 정보)

# 지역명과 지역 대표 음식
localfood = {'춘천' : '닭갈비' , '의정부' : '부대찌개' , '안동' : '찐빵'}

# 온라인 쇼핑몰 고객 정보
user1 = {'name' : 'Python' , 'birth' : '990517' , 'phone' : '010-9999-9999'}
user2 = {'name' : 'Java' , 'birth' : '961217' , 'phone' : '010-0000-0000'}
print(user1['name'] + ' & ' + user2['name'])

딕셔너리에서의 검색

💡 리스트와 달리 인덱스 번호를 사용하지 않고, key 명을 입력하여 value를 찾는 방식

딕셔너리를 선언할 때는 중괄호 {}를 사용하지만, 검색시에는 대괄호 []를 사용한다

딕셔너리 내의 없는 key를 검색시에는 error가 발생

딕셔너리에 데이터 추가하기

💡 딕셔너리명[key] = value

  • key 중복되지 않도록 유의
  • 중복될 경우, key의 값이 덮어써짐 (기존의 key에 해당하는 value가 지워지고, 새로 작성된 value로 변경됨)
localfood = {'춘천' : '닭갈비' , '의정부' : '부대찌개' , '안동' : '찐빵'}
localfood['전주'] = '비빔밥'
print(localfood)

딕셔너리에 데이터 제거하기

💡 del딕셔너리명[제거하려는 데이터의 key]

‘del딕셔너리명’ 은 딕셔너리 전체를 삭제하게 됨

localfood = {'춘천':'닭갈비', '의정부':'부대찌개','안동':'찐빵', '전주':'비빔밥'}
del localfood['의정부']
print(localfood)

localfood = {'춘천':'닭갈비', '의정부':'부대찌개','안동':'찐빵', '전주':'비빔밥'}
del localfood
print(localfood)

딕셔너리 전용함수

💡 딕셔너리 변수 뒤에 점(.)을 찍고 호출

딕셔너리 전용함수들 설명
get(key, value=None) 주어진 키를 가지고 값을 찾아 반환, 만약 없으면 value 옵션 내용 반환
pop(key) key에 해당하는 값을 반환하고 항목을 삭제
keys() 딕셔너리 안의 모든 키를 반환
values() 딕셔너리 안의 모든 값을 반환
items() 딕셔너리 안의 모든 (,)을 반환
update(d) 기존 딕셔너리에 딕셔너리 d를 추가
clear() 딕셔너리의 모든 항목을 제거
# get함수 예제

menu = {'coffee':'3$' , 'soda':'2$' , 'milk':'2$' , 'lemonade':'4$'}
order = input('What do you want to drink?')
menu[order] 

# get함수 예제

menu = {'coffee':'3$' , 'soda':'2$' , 'milk':'2$' , 'lemonade':'4$'}
order = input('What do you want to drink?')
print(menu.get(order,'menu : coffe, soda, milk, lemonade'))


딕셔너리와 제어문

딕셔너리와 조건문

💡 Dictionary & if

  • 멤버연산자는 특정 key의 존재 여부를 알려줌
  • ‘딕셔너리명[key]’ 형식으로 value를 찾기 전에 key의 존재 여부를 미리 검사해서 KeyError 발생 방지 가능
menu = {'coffee':'3$' , 'soda':'2$' , 'milk':'2$' , 'lemonade':'4$'}
order = input('What do you want to drink?')

if order in menu :
 print(f"It's {menu[order]}.")
else :
 print("Sorry. We only have coffe, soda, milk, lemonade.")

딕셔너리와 반복문

💡 Dictionary & for

  • 딕셔너리의 key리스트 혹은 value 리스트가 반복문 제어 변수로 활용
  • Key 리스트 생성 방법 : dict.keys()
  • Value 리스트 생성 방법 : dict.values()
Gryffindor = {'Harry':'1', 'Ron':'1', 'Oliver':'5', 'Fred&George':'3'}
for name in Gryffindor.keys() :
 print(name)

리스트 원소로 사용된 딕셔너리

Students = [{'name':'Harry', 'dorm':'Gryffindor', 'grade':'1st'},
{'name':'Draco', 'dorm':'Slytherin', 'grade':'1st'},
{'name':'Cedric', 'dorm':'Hufflepuff', 'grade':'3rd'}]

for s in Students :
 print(f"{s['name']} is {s['grade']} grade students in {s['dorm']}.")

▸ Students 변수는 리스트 변수

▸ Students 리스트의 각 원소 하나하나가 딕셔너리인 형태

for s in Students : 를 이용하여, 리스트 내의 딕셔너리 한 개 한개를 s라는 이름의 딕셔너리로 저장하여 리스트 내의 딕셔너리들을 반복해서 출력하게 됨