여러 값을 저장
해 두고 필요한 값을 꺼내 쓰는 기능wintable = {
'가위' : '보',
'바위' : '가위',
'보' : '바위',
}
print(wintable['가위'])
월을 이름표로 가지고, 그 달에 있는 날짜 수를 값으로 가지는 딕셔너리를 만들어서 days_in_month에 저장해 보세요.
days_in_month = {
'1월' : 31,
'2월' : 28,
'3월' : 31
}
print(days_in_month)
{'1월': 31, '2월': 28, '3월': 31}
딕셔너리의 이름표에는 문자열과 숫자형, 튜플을 사용할 수 있으며, 값으로는 어떤 자료형이 오던 상관 없습니다. 이번 문제에서는 값에 들어갈 자료형으로 리스트를 사용할 수 있음을 보여줍니다. 다음 코드를 실행해서 확인해 보세요.
# ↓ 이름표는 문자열 또는 숫자를 주로 사용하지만
dict = { "이름표" : [1,2,3] }
# ↑ 값은 리스트를 포함해서 무엇이든 올 수 있습니다.
print( dict["이름표"] )
dict['three'] = 3
dict['one'] = 11
del(dict['one']) dict.pop('two')
for i in range(5):
print(i)
enumerate
는 리스트가 있는 경우 순서와 리스트의 값을 전달하는 기능names = ['철수', '영희', '영수']
for i, name in enumerate(names):
print('{}번 : {}'.format(i+1, name))
days_in_month에는 2월이 28일까지 있다고 만들어져 있는데요. 알고보니 2016년에는 2월이 29일까지 있습니다. "2월"이라는 이름표가 가지는 값을 29로 수정해 보세요. (단, 첫번째 줄은 수정하지 마세요)
days_in_month = {"1월":31, "2월":28, "3월":31}
days_in_month["2월"] =29
print(days_in_month)
dict['one' : 1, 'two' : 2]
dict['three'] = 3 # 값을 추가합니다 {'one' : 1, 'two' : 2, 'three' : 3}
dict['one'] = 11 # 값을 수정합니다 {'one' : 11, 'two' : 2, 'three' : 3}
days_in_month에는 엉뚱하게도 -1월이라는 이름표와 값이 있는데요. 이 값을 지워보세요. (단, 첫번째 줄은 수정하지 마세요)
days_in_month = {"1월":31, "2월":28, "3월":31,"-1월":97889789}
del(days_in_month["-1월"])
dict['one' : 1, 'two' : 2]
dict['three'] = 3 # 값을 추가합니다 {'one' : 1, 'two' : 2, 'three' : 3}
dict['one'] = 11 # 값을 수정합니다 {'one' : 11, 'two' : 2, 'three' : 3}
del(dict['one']) # 값을 삭제합니다 {'two' : 2, 'three' : 3}
dict.pop('two') # 값을 삭제합니다 {'three' : 3}
for key in ages.keys(): # keys() 생략 가능
print(key)
for value in ages.values():
print(value)
for key, value in ages.items():
print('{}의 나이는 {} 입니다'.format(key, value))
for in문을 이용해서 days_in_month의 이름표(key)를 한줄씩 출력해 보세요.
딕셔너리를 반복문에서 활용하는 방법을 알아봅시다. 딕셔너리의 반복문에서는 경우에 따라 key를 가져올 수도 있고 값을 가져올 수도 있습니다. 아래의 예를 참고하여 문제를 해결해 보세요.
days_in_month = {"1월":31, "2월":28, "3월":31, "4월":30, "5월":31}
for key in days_in_month.keys():
print(key)
ages = {'Tod' : 35, 'Jane' = 23, 'Paul' : 62}
for key in ages.keys(): # keys() 생략 가능
print(key) # Tod, Jame, Paul이 출력됩니다.
for value in ages.values():
print(value) # 62, 23, 35가 출력됩니다.
days_in_month의 각 이름표와 값을 다음과 같은 형식으로 출력해 보세요.
1월은 31일이 있습니다.
2월은 28일이 있습니다.
...
정확한 출력 형식은 작성되어 있는 print함수를 참고하세요.
days_in_month = {"1월":31, "2월":28, "3월":31, "4월":30, "5월":31}
for key, value in days_in_month.items():
print("{}은 {}일이 있습니다.".format(key, value) )
dages = {'Tod' : 35, 'Jane' : 23, 'Paul' : 62}
for key, value in ages.items():
print('{}의 나이는 {} 입니다'.format(key, value))
check_and_clear는 딕셔너리 타입의 box를 매개변수로 받는데요. 만약 box에 "불량품"이라는 이름표가 있으면 box 전체를 빈 딕셔너리로 만들어 버리고, 불량품이 없으면 box를 그대로 두는 함수입니다. 다음 코드를 수정해서 check_and_clear 함수를 완성하세요.
def check_and_clear(box):
print("불량품이 있으면 box를 clear합니다.")
box1 = {"불량품" : 10}
check_and_clear(box1)
dict['{}']
print(box1)
box2 = {"정상품": 10}
check_and_clear(box2)
dict['box2']
print(box2)
'two' in dict.keys()
또한 딕셔너리의 내용을 전부 삭제하고 싶다면 dict.clear()를 호출하면 된답니다.
products는 문방구에 진열되어 있는 상품과 가격 정보를 담고 있는 딕셔너리입니다. 문방구에서는 새로운 상품에 대한 정보를 catalog로 받는데요. catalog에는 이번에 새로 입고되는 상품과 가격이 적혀있고 또 기존 제품의 가격이 변경된 경우 그 가격정보를 담고 있습니다. products가 catalog의 정보를 반영하여, 앞으로 문방구에서 판매할 상품 정보를 갖는 딕셔너리가 되도록 코드를 완성하세요.
products = {"풀":800, "딱풀":1200, "색종이":1000,"색연필":5000,"스케치북":3500}
catalog = {"겨울용 실내화":12000, "잠자리채":8000, "딱풀":1400}
products.update(catalog)
dages = {'Tod' : 35, 'Jane' : 23, 'Paul' : 62}
for key, value in ages.items():
print('{}의 나이는 {} 입니다'.format(key, value))
tuple1 = (1, 2, 3, 4)
tuple2 = 1, 2, 3, 4
mylist = [1,2,3,4]
tuple3 = tuple(mylist)
-튜플은 값의 변경과 삭제가 불가능
튜플은 여러가지 방식으로 만들수가 있습니다. 다음 코드를 실행해서 튜플이 만들어질 수 있는 다양한 방법을 확인해 보세요.
tuple1 = (1,2,3)
tuple2 = 1,2,3
list3 = [1,2,3]
tuple3 = tuple(list3)
if tuple1 == tuple2 == tuple3:
print("tuple1과 tuple2와 tuple3은 모두 같습니다.")
튜플도 리스트와 마찬가지로 index로 값을 읽어올 수 있습니다. 현재 코드를 실행하면 0,1,2가 차례로 한 줄 씩 출력되지요. 코드의 3번째 줄 print문을 수정해서 tuple1의 값이 각각 한 줄 씩 출력되도록 만들어 보세요
products = {"풀":800, "딱풀":1200, "색종이":1000,"색연필":5000,"스케치북":3500}
catalog = {"겨울용 실내화":12000, "잠자리채":8000, "딱풀":1400}
products.update(catalog)
**tuple1 = (11, 22, 33)
for i in range( len( tuple1) ):
print('i'.format(i+1,tuple1)**)
packing
unpacking
c = (3, 4)
d, e = c # c의 값을 언패킹하여 d, e에 값을 넣었다
f = d, e # 변수 d와 e를 f에 패킹
튜플의 활용
x = 3 , y = 5
의 값을 가지고 있습니다. position이 x와 y값으로 이루어진 튜플이 되도록 packing해 보세요.
x = 3
y = 5
position = x,y
print("x, y로 이루어진 튜플 position의 값은 {}입니다.".format(position))
a, b = 1, 2
c = a, b #c = (1, 2)
또한 딕셔너리의 내용을 전부 삭제하고 싶다면 dict.clear()를 호출하면 된답니다.
a,b는 각각 1,2의 값을 가지고 있습니다. 튜플을 이용해서 a와 b의 값을 서로 바꿔보세요.
unpacking은 패킹된 변수에서 여러개의 값을 꺼내옵니다. 아래의 예를 참고하여 튜플을 이해하고 문제를 해결해 보세요
a = 1
b = 2
#코드를 작성해 보세요.
a, b =
b,a
print("a : {}, b : {}".format(a, b))
c = (3, 4)
d, e = c # c의 값을 언패킹하여 d, e에 값을 저장
f = d, e # 변수 d와 e를 f에 패킹
튜플 리스트 활용
for a in enumerate(list):
print('{}번째 값: {}'.format(a[0], a[1]))
for a in enumerate(list):
print('{}번째 값: {}'.format(*a))
튜플 딕셔너리 활용
for a in dict.items():
print('{}의 나이는:{}'.format(a[0], a[1]))
for a in dict.items():
print('{}의 나이는:{}'.format(*a))
튜플의 활용
products의 상품명과 값을 한 줄씩 출력하도록 코드의 4번째줄의 빈칸을 채워 보세요.
products = {"풀" : 800, "색종이": 1000}
for product_detail in products.items():
print("{}의 가격: {}원".format(
* product_detail
))
ages = {'Tod' : 35, 'Jane' : 23, 'Paul' : 62}
for a in ages.items():
print('{}의 나이는:{}'.format(a[0], a[1]))
for a in ages.items():
print('{}의 나이는:{}'.format(*a)) # 두 출력 결과가 같습니다.