자운최고지식인되기/파이썬 공부
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라는 이름의 딕셔너리로 저장하여 리스트 내의 딕셔너리들을 반복해서 출력하게 됨