파이썬 기초8. 딕셔너리, 집합
1.딕셔너리(dictionary)
-딕셔너리란 키(key)와 값(value) 쌍으로 구성된 자료의 묶음, 인덱스 대신 키값으로 접근 가능
-인덱스와 달리 특별한 키(key)값을 이용하여 자료에 접근, 키값과 관련된값(value)가 짝을 이루고 있음
이를 'key-value pair'라고 함
-딕셔너리는 중괄호({})룰 이용하여 요소를 감싸고, 키 다음 콜론(:)을 입력하여 값을 입력
-딕셔너리 이름 뒤에 대괄호를 친 뒤 찾고자하는 키값을 입력하면 그에 대응하는 valule가 나옴
phone_book={'홍길동':'010-1234-5678',
'강감찬':'010-11111-2222',
'이순신':'010-3333-4444'}
phone_book['강감찬']
리스트 : 대괄호([])
딕셔너리:중괄호({})
2.딕셔너리 생성과 추가
빈 딕셔너리를 생성하고 key값과 value값 넣기
phone_book={}
phone_book["홍길동"]="010-1234-5678"
print(phone_book)
2-1.딕셔너리 생성과 함께 초기화
phone_book={"홍길동":"010-1234-5678"}
print(phone_book)
3.딕셔너리 탐색
딕셔너리에서 키를 모르는 경우 keys()를 사용하여 모든 키를 확인할 수 있음
phone_book={"홍길동":"010-1234-5678",
"강감찬":"010-1111-2222",
"이순신":"010-3333-4444"}
print(phone_book.keys())
3-1. 딕셔너리 정리
phone_book={"홍길동":"010-1234-5678",
"강감찬":"010-1111-2222",
"이순신":"010-3333-4444"}
for key in sorted(phone_book.keys()):
print(key,phone_book[key])
3-2.딕셔너리에 사용된 모든 값 조회
phone_book={"홍길동":"010-1234-5678",
"강감찬":"010-1111-2222",
"이순신":"010-3333-4444"}
print(phone_book.values())
4.딕셔너리 수정과 삭제- del(), pop()
딕셔너리 수정-> del,pop(),clear() 이용하며 키를 통해 이루어짐
phone_book={"홍길동":"010-1234-5678",
"강감찬":"010-1111-2222",
"이순신":"010-3333-4444"}
phone_book["강감찬"]="010-1234-1234"
print(phone_book)
phone_book={"홍길동":"010-1234-5678",
"강감찬":"010-1111-2222",
"이순신":"010-3333-4444"}
del phone_book["홍길동"]
print(phone_book)
print(phone_book.pop("이순신"))
print(phone_book)
4-1.딕셔너리 항목 모두 삭제하기- clear()
phone_book={"홍길동":"010-1234-5678",
"강감찬":"010-1111-2222",
"이순신":"010-3333-4444"}
phone_book.clear()
print(phone_book)
문제1)
english_dict={}
english_dict["one"]="하나"
english_dict["two"]="둘"
english_dict["three"]="셋"
word=input("단어를 입력하시오:")
print(english_dict[word])
문제2) 편의점 재고관리 프로그램
items={"커피":7,"펜":3,"종이컵":10,"우유":5,"콜라":4,"라면":11}
print("판매 전 재고:",items)
sell=input("판매할 물건을 입력하세요:")
if sell in items:
items[sell]-=1
else:
print("판매 제품이 아닙니다.")
print("판매 후 재고",items)
5.딕셔너리와 반복문
많은 양의 정보를 처리하기 위해 딕셔너리 자료형 사용 -> 반복문을 사용하여 비슷한 작업을 처리할 수 있음
phone_book={"홍길동":"010-1234-5678",
"강감찬":"010-1111-2222",
"이순신":"010-3333-4444"}
for i in phone_book.keys():
print(i)
for i in phone_book.values():
print(i)
phone_book={"홍길동":"010-1234-5678",
"강감찬":"010-1111-2222",
"이순신":"010-3333-4444"}
for k,v in phone_book.items():
print('{}의 전화번호는 {}입니다.'.format(k,v))
문자열의 format()을 사용하면 문자열 안에서 중괄호 부분 ({}) 순서대로 format()함수 인자값으로 변환됨
6. 집합
자료의 묶음, 집합은 중복된 데이터를 가질 수 없고 순서를 가질 수 없음
6-1. 집합 생성하기 - set()
s=set()
s.add(10)
s.add(3)
print(s)
6-2. 집합 항목 삭제하기 - discard(),remove(),clear()
s=set()
s.add(10)
s.add(3)
s.add(1)
s.add(5)
s.add(2)
s.discard(5)
print(s)
문제1) 가위, 바위, 보 게임 만들기
import random
def match(c,m):
if c==m:
return "비겼습니다."
elif match_table[c]==m:
return "졌습니다."
else:
return "이겼습니다."
rps_dic={1:"가위",2:"바위",3:"보"}
match_table={"가위":"보","바위":"가위","보":"바위"}
computer=rps_dic[random.randint(1,3)]
mine=input("가위,바위,보 입력:")
result=match(computer,mine)
print(result)