마케팅/파이썬

파이썬 기초8. 딕셔너리, 집합

내이름은뭘까 2023. 6. 1. 17:55

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)