[Python] 09.사전(Dictionary)
- Develop/Python
- 2020. 12. 30.
■ 사전 선언 방법 - 1
컬렉션중 사전을 만드는 방법입니다. 사전은 키:값 방식의 선언 방법입니다. {}(중괄호)문으로 시작합니다.
그리고 key:value방식으로 항목을 만듭니다.
▶사용방법
사전명 = {"키:값","키:값","키:값","키:값"}
▶︎ 예제 코드
코드 :
grocery = {"TV": 1, "냉장고": 12, "오디오": 2}
print(grocery)
결과 :
{'TV': 1, '냉장고': 12, '오디오': 2}
■ 사전선언방법 - 2
키, 값 방식의 다른 선언 방식입니다.
▶︎ 사용방법
사전명 = {}
사전명["키"] = 값
▶︎ 예제 코드
코드 :
animals = {}
animals["고양이"] = 2
animals["강아지"] = 4
animals["거북이"] = 0
# 사전 갯수를 출력합니다.
print(len(animals))
# 사전안의 키:값을 모두 출력합니다.
print(animals)
# 특정키의 값을 변경합니다. 키 고양의 값을 변경합니다.
animals["강아지"] = 3
# 사전 갯수를 출력합니다.
print(len(animals))
# 사전안의 키:값을 모두 출력합니다.
print(animals)
결과 :
3
{'고양이': 2, '강아지': 4, '거북이': 0}
3
{'고양이': 2, '강아지': 3, '거북이': 0}
■ 사전에서 키-값 제거
사전에서 특정 키를 제거합니다.
▶︎ 사용방법
사전명.pop("키")
del 사전명['키']
▶︎ 예제 코드
코드 :
household = {"TV": 4, "냉장고": 2, "오디오": 1, "에어컨": 2}
print(household)
removed = household.pop("에어컨")
print(household)
# 키:값이 아닌 키의 값이 출력됨.
print(removed)
# poo대신 del을 사용해도 삭제 가능
del household["TV"]
print(household)
결과 :
{'TV': 4, '냉장고': 2, '오디오': 1, '에어컨': 2}
{'TV': 4, '냉장고': 2, '오디오': 1}
2
{'냉장고': 2, '오디오': 1}
■ 사전에서 키-값 추가
사전에서 키:값을 추가하는 방법입니다.
▶︎ 사용방법
사전명['키']=값
▶︎ 예제 코드
코드 :
household = {"TV": 4, "냉장고": 2, "오디오": 1, "에어컨": 2}
# 추가하기전에 출력
print(household)
# 추가후 출력
household['온열기']=5
household['전자레인지']=6
print(household)
결과 :
{'TV': 4, '냉장고': 2, '오디오': 1, '에어컨': 2}
{'TV': 4, '냉장고': 2, '오디오': 1, '에어컨': 2, '온열기': 5, '전자레인지': 6}
■ 사전에서 에러없이 값 가져오기
사전에서 존재하지 않는 키값을 처리할 시 에러가 발생합니다. 이때 메소드 get을 이용하면 에러없이 none으로 출력됩니다.
▶︎ 사용방법
변수명['키'] : 시스템 에러 발생
변수명.get('키') : none이란 메세지로 출력
▶︎ 예제 코드
코드 :
animals = {"강아지": 1, "고양이": 4, "거북이": 2}
# none이란 메세지로 출력
print(animals.get('호랑이'))
# 시스템 에러 발생
print(animals['호랑이'])
결과 :
첫번째 프린트시
None
두번째 프린트시
시스템 에러.
■ 사전 병합
2개의 사전을 하나로 병합합니다. 즉 병합 대상으로 원본을 업데이트 합니다. 업데이트 할 항목이 없다면 추가를 합니다.
▶︎ 사용방법
사전명.update(사전)
▶︎ 예제 코드
코드 :
a={'a':1,'b':2,'c':3}
b={'a':2,'d':4,'e':5}
# b의 값으로 a업데이트. 없는 값은 추가
a.update(b)
print(a)
결과 :
{'a': 2, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
■ 사전내용 클리어
사전내용을 지웁니다.
▶︎ 사용방법
사전명.clear()
▶︎ 예제 코드
코드 :
a={'a':1,'b':2,'c':3}
print(a)
a.clear()
print("값 : ",a)
결과 :
{'a': 1, 'b': 2, 'c': 3}
값 : {}
■ 키, 값 불러오는 다양한 방법
키와 값을 불러오는 여러가지 다양한 방법입니다.
▶︎ 예제 코드
• 예제 1 : 한번에 출력하기
메소드 : 사전명.keys()
코드 :
electronics = {"tv": 3, "refrigerator": 5, "computer": 4}
print(electronics.keys())
결과 :
dict_keys(['tv', 'refrigerator', 'computer'])
• 예제 2 : 키의 값들 출력
코드 :
electronics = {"tv": 3, "refrigerator": 5, "computer": 4}
print(electronics.values())
결과 :
dict_values([3, 5, 4])
• 예제 3 : 키만 출력하기(list를 이용하여)
코드 :
electronics = {"tv": 3, "refrigerator": 5, "computer": 4}
print(list(electronics.keys()))
출력 : 위와 비교하면 dict_keys는 출력안됨. 순수하게 key만 출력.
['tv', 'refrigerator', 'computer']
• 예제 4 : 값만 출력하기(list를 이용하여)
코드 :
electronics = {"tv": 3, "refrigerator": 5, "computer": 4}
print(list(electronics.values()))
출력 : 위와 비교하면 dict_values는 출력안됨. 순수하게 value만 출력.
[3, 5, 4]
• 예제 5 : 값만 출력하기(list를 이용하여)
코드 :
electronics = {"tv": 3, "refrigerator": 5, "computer": 4}
print(list(electronics.items()))
출력 : 키와 값 모두 출력
[('tv', 3), ('refrigerator', 5), ('computer', 4)]
• 예제 6 : for를 이용하여 키를 하나씩 출력하기(루핑)
코드 :
electronics = {"tv": 3, "refrigerator": 5, "computer": 4}
for one_elec in electronics.keys():
print(one_elec)
결과 :
tv
refrigerator
computer
■ 사전 다중값 할당 및 출력 방법
사전의 키에는 여러 값을 입력할 수 있습니다.
▶︎ 사용방법
사전명["키"]=[값1,값2...]
▶︎ 예제 코드
코드 :
per_info = {}
per_info["민수"] = [170,70]
per_info["혜미"] = [160,50]
print(per_info.keys())
print(per_info.values())
print(per_info.items())
print(list(per_info.keys()))
print(list(per_info.values()))
print(list(per_info.items()))
결과 :
dict_keys(['민수', '혜미'])
dict_values([[170, 70], [160, 50]])
dict_items([('민수', [170, 70]), ('혜미', [160, 50])])
['민수', '혜미']
[[170, 70], [160, 50]]
[('민수', [170, 70]), ('혜미', [160, 50])]
■ 사전의 다중값 출력 및 연산(for를 이용하여)
사전의 다중값들을 다양한 출력예제로 확인해 봅니다.
▶︎ 예제 코드
코드 : 키의 값들 출력
grades = {}
grades["프랭크"] = [100,70]
grades["토비"] = [90,100]
grades["도남"] = [80,40]
grades["제이스"] = [70,70]
# 사전안의 키값들을 출력합니다.
for student in grades.keys():
print(student)
# 사전안의 값들을 가져옵니다. 값을 더한후 그 값을 2로 나눕니다.
for quizzes in grades.values():
print(sum(quizzes)/2)
# for를 이용하여 사전안의 키를 하나 가져온 후(student) 사전의 특정 키를 가져옵니다(grades[student]).
# 그리고 그 키값을 score 변수에 저장합니다. 평균값(sum(scores)/2)을 계산하고 그 값을
# 사전의 특정키에 추가합니다(grades[student].append).
for student in grades.keys():
scores = grades[student]
grades[student].append(sum(scores)/2)
# 모든 값 출력
print(grades)
결과 :
프랭크
토비
도남
제이스
85.0
95.0
60.0
70.0
{'프랭크': [100, 70, 85.0], '토비': [90, 100, 95.0], '도남': [80, 40, 60.0], '제이스': [70, 70, 70.0]}
■ 빈도수 계산
사전 항목중에서 해당 문자열이 몇번이나 반복되는지 확인.
▶︎ 사용방법
for와 누적카운트 변수를 이용하여 확인.
▶︎ 예제 코드
코드 :
birthday_song = "Happy birthday to you Happy birthday to you Happy birthday dear My Friend Happy birthday to you"
counts = {}
words = birthday_song.split(" ")
for i in words:
i = i.lower()
if i not in counts:
counts[i] = 1
else:
counts[i] += 1
print(counts)
결과 :
{'happy': 4, 'birthday': 4, 'to': 3, 'you': 3, 'dear': 1, 'my': 1, 'friend': 1}
■ 사전의 항목 제거시 유의사항
이터레이션중 크기 변경되면 에러가 발생됩니다.
▶︎ 예제 코드
코드 :
songs = {"Wannabe": 1, "Roar": 1, "Let It Be": 5, "Red Corvette": 4}
for s in songs.keys():
if songs[s] == 1:
songs.pop(s)
결과 :
RuntimeError: dictionary changed size during iteration
■ 파이선 다른 회차
[Python] Intro : Very Quick Python : https://myinfrabox.tistory.com/169
[Python] 01.Python 준비 : https://myinfrabox.tistory.com/170
[Python] 02.Python 스크립트 작성 방법 : https://myinfrabox.tistory.com/171
[Python] 03.변수 선언 및 할당 : https://myinfrabox.tistory.com/172
[Python] 04.문자열 처리 : https://myinfrabox.tistory.com/173
[Python] 05.조건문 : https://myinfrabox.tistory.com/174
[Python] 06.반복문 : https://myinfrabox.tistory.com/175
[Python] 07.튜플(Tuple) : https://myinfrabox.tistory.com/176
[Python] 08.리스트(List) : https://myinfrabox.tistory.com/177
[Pytho] 10.set : https://myinfrabox.tistory.com/179
[Python] 11.함수(Function) : https://myinfrabox.tistory.com/180
[Python] 12.클래스(Class) : https://myinfrabox.tistory.com/181
[Python] 13.외부 클래스 사용하기 : https://myinfrabox.tistory.com/182
[Python] 14.파일처리 : https://myinfrabox.tistory.com/183
[Python] 15.MySQL Database : https://myinfrabox.tistory.com/184
'Develop > Python' 카테고리의 다른 글
[Python] 11.함수(Function) (0) | 2020.12.30 |
---|---|
[Pytho] 10.set (0) | 2020.12.30 |
[Python] 08.리스트(List) (0) | 2020.12.30 |
[Python] 07.튜플(Tuple) (0) | 2020.12.30 |
[Python] 06.반복문 (0) | 2020.12.30 |