IT학습/Python

[Python] 코딩 도장 복습: 딕셔너리, zip()

바틀비 2024. 1. 11. 21:00

딕셔너리 = {키1 : 값 1, 키2 : 값2}

딕셔너리 만들기
빈 딕셔너리 만드는 방법: dict0 = {}

딕셔너리의 value 값에는 문자열, 정수, 실수, bool, 리스트, 튜플, range, 딕셔너리가 들어갈 수 있다.
그러나 key 값에는 문자열, 정수, 실수, bool만 가능하다. 리스트, 딕셔너리, 튜플, range는 불가능.

딕셔너리의 key 업데이트하기
dict['new_key'] = 'new_value' : 새로운 key와 값을 딕셔너리 맨 뒤에 업데이트
dict['old_key'] = 'new_value' : 기존 key에 새로운 값을 업데이트

그외
 key in 딕셔너리 : 키가 딕셔너리에 있는지 없는지 확인. True나 False를 반환함
len(딕셔너리) : 딕셔너리의 키 개수를 반환

dict0 = {}

print(dict0)

dict_ex = {
    2 : 13,
    2.13 : "정수, 실수 key 가능",
    False : True,
    "string" : "문자열",
    "list" : [0, 1, 2],
    "tuple" : (0, 1, 2),
    "range" : range(3),
    'dict' : dict0
}

print(dict_ex)

dict_ex[False] = "bool도 key 가능"
dict_ex['new key'] = True

print(dict_ex)

print(False in dict_ex)
print(True in dict_ex)
print(len(dict_ex))

"""
출력 결과

{}
{2: 13, 2.13: '정수, 실수 key 가능', False: True, 'string': '문자열', 'list': [0, 1, 2], 'tuple': (0, 1, 2), 'range': range(0, 3), 'dict': {}}
{2: 13, 2.13: '정수, 실수 key 가능', False: 'bool도 key 가능', 'string': '문자열', 'list': [0, 1, 2], 'tuple': (0, 1, 2), 'range': range(0, 3), 'dict': {}, 'new key': True}
True
False
9
"""

 

zip 함수 사용법과 딕셔너리 응용
zip(): 리스트와 리스트를 묶어주는 함수.
dict_ex = dict(zip([list1, [list2]))

예시

표준 입력으로 문자열 여러 개와 숫자(실수) 여러 개가 두 줄로 입력됩니다. 입력된 첫 번째 줄은 키, 두 번째 줄은 값으로 하여 딕셔너리를 생성한 뒤 딕셔너리를 출력하는 프로그램을 만드세요. input().split()의 결과를 변수 한 개에 저장하면 리스트로 저장됩니다.

더보기

 

key = input().split()
value = map(float, input().split()) 

dict = dict(zip(key, value)) 
#zip을 하면서 [(key1, value1), (key2, valeu2)] 형태의 리스트가 만들어진다.

print(dict)

"""
health mana melee attack_speed magic_resistance
573.6 308.8 600 0.625 35.7

{'health': 573.6, 'mana': 308.8, 'melee': 600.0, 'attack_speed': 0.625, 'magic_resistance': 35.7}
"""

메모)
zip 함수와 리스트를  묶는 함수이다.
map을 하면 대상 리스트는 클래스 객체 list에서 클래스 객체 map으로 변하지만 zip 함수를 받는다(?)