- dictionary 란 { } 로 둘러쌓여, 'key(키) : value(값)' 이 하나의 요소로 이루어진 collection 입니다. ( java 에서는 Map 입니다.)
- key : 변경불가(immutable) -> 정수, 문자열
value : 변경가능(mutable)- key 값은 중복될 수 없으며, 하나의 key 에는 하나의 value 만 포함될 수 있습니다.
- dictionary 는 key 를 사용해서 값에 접근합니다.
dict_1 = {} print(f"dict_1 {type(dict_1)}") print()dict_2 = dict() print(f"dict_2 {type(dict_2)}") print()num_dict = { 1:'one', 2:'two', 3:'three'} print(f"num_dict {num_dict}") print()onepiece_dict = { '루피': 14, '조로':11, '나미' : 7 } print(f"onepiece_dict {onepiece_dict}") print()
튜플을 먼저 생성하고 생성한 튜플에 딕트를 적용할 수 있습니다.
size_tu = ('small', 'large') coffee_dict = { size_tu[0]:180, size_tu[1]: 2500 } print(f"커피 가격 : {coffee_dict}") print()
리스트 안의 한개의 요소가 튜플이 될 수 있습니다.
tp_list = [('루피', 14), ('조로',11), ('나미', 8)] print(f"tp_list {tp_list}") print()
튜플 리스트를 딕트로 만들 수 있습니다.
tp_list_dict = dict(tp_list) print(f"tp_list_dict {tp_list_dict}") print()
constructor_dict = dict(루피=7, 조로=5, 쵸파=3) print(f"constructor_dict {constructor_dict}")
키값을 중복 처리해서 만들게 되면 마지막 값으로 딕트가 생성됩니다.
dict_3 = {'a':1, 'b':2, 'a':3} print(f"dict_3 {dict_3}") print()
'''
onepiece_lv = {'루피' : 14, '조로' : 11, '나미' : 7, '쵸파' : 6} print(f"onepiece_lv {onepiece_lv}") print(f"루피 레벨 : {onepiece_lv['루피']}") print()
onepiece_lv['조로'] = 12 print(f"조로 레벨 : {onepiece_lv['조로']}") print()
onepiece_lv['로빈'] = 8 print(f"onepiece_lv {onepiece_lv}") print()
onepiece_lv = {'루피' : 14, '조로' : 11, '나미' : 7, '쵸파' : 6} print(f"onepiece_lv {onepiece_lv}") print()
- dictionary 의 key 만을 tuple 로 모아서 dict_keys 객체로 반환합니다.
print(" .keys() ") print(onepiece_lv.keys()) print()
keys() 를 사용하면 for문으로 직접 접근이 가능합니다.
print("for 문에 keys() 함수 적용") for k in onepiece_lv.keys(): print(k) print()
keys() 의 딕트 안의 값은 리스트로 되어 있기 때문에 리스트로 변환하여 사용할 수 있습니다.
key_list = list(onepiece_lv.keys()) print(f"key_list {key_list}") print()
- dictionary 의 values 만을 tuple 로 모아서 dict_values 객체로 반홥합니다.
- 마찬가지로 리스트에 담아서 사용 가능합니다
print(".values()") print(onepiece_lv.values()) print()
- key 와 value 의 쌍을 tuple 로 묶어서 dict_items 객체로 반환합니다.
print(".items()") print(onepiece_lv.items()) print()
for item in onepiece_lv.items(): # print(item) k, v = item # 각각의 변수에 따로 접근 print(f"{k} - {v}") print()
- key 를 사용해서 값을 반환합니다.
- key 값이 없으면 Error 가 발생하지 않고, None 값을 반환합니다.
- 찾는 key 값이 없을때 'default value' 를 지정할 수 있습니다.
print(".get()") print(f"루피 : {onepiece_lv.get('루피')}") print(f"프랑키 : {onepiece_lv.get('프랑키')}") print(f"브룩 : {onepiece_lv.get('브룩', '없습니다~')}") print()
하나의 요소를 추가합니다.
- key 값이 없으면 추가되고, key 값이 있으면 추가되거나 value 값이 변경되지 않습니다.
값이 없으면 추가됩니다.
print(".setdefaults()") print(onepiece_lv.setdefault('브룩')) print(f"onepiece_lv {onepiece_lv}") print()
값이 존재하면 추가되지 않습니다.
print(onepiece_lv.setdefault('쵸파')) print(f"onepiece_lv {onepiece_lv}") print()
값이 존재하면 수정되지 않습니다.
print(onepiece_lv.setdefault('나미', 10)) print(f"onepiece_lv {onepiece_lv}") print()
- dictionary 안에 여러개의 요소를 추가하거나 변경할 수 있습니다.
- key 값이 없으면 'key:value' 를 추가하고, key 값이 있으면 value 값을 변경합니다.
add_dict = {'프랑키':9, '나미': 11} onepiece_lv.update(add_dict) print(f"onepiece_lv {onepiece_lv}") print()
onepiece_lv.update({'상디': 10}) print(f"onepiece_lv {onepiece_lv}") print()
- key 값을 사용해서 요소를 삭제합니다.
- 삭제 key 값이 없으면 Error 입니다.
print(".pop()") onepiece_lv.pop('조로') print(f"onepiece_lv {onepiece_lv}") print()
# onepiece_lv.pop('로빈') # Error
- dictionary() 안에 저장된 데이터를 순서대로 하나의 요소(key:value)를 tuple 로 반환하면서 삭제합니다.
print(".popitem()") print(f"삭제 {onepiece_lv.popitem()}") print(f"onepiece_lv {onepiece_lv}")
- 모든 요소를 삭제하고 빈 자료형만 남습니다.
print(".clear()") onepiece_lv.clear() print(f"onepiece_lv {onepiece_lv}") print()
print("{}.fromkeys") key_list = [ 1, 2, 3, 4, 5 ] key_dict = {}.fromkeys(key_list) print(f"key_dict {key_dict}") print()
key_tu = 1, 2, 3 key_dict2 = {}.fromkeys(key_tu, 0) print(f"key_dict2 {key_dict2}")
check_dict = {}.fromkeys(['a', 'b', 'c'], 0) print(f"check_dict {check_dict}") print(f"a 확인 : {'a' in check_dict}") print(f"z 확인 : {'z' in check_dict}") print()
person = dict()
info = list()
name = "손흥민"
info = ["30", "토트넘"]
person[name] = info
print(person)
data = person.get(name)
print(f"{name} 정보 : {data}")
key_data = ""
value_data = []
if name in person:
for item in person.items():
k, v = item
if k == name:
key_data = k
value_data = v
else:
print("없는 key ~")
if key_data != "":
print(f"- {key_data} 님의 정보 -")
print(f"나이 : {value_data[0]} 세")
print(f"소속팀 : {value_data[1]}")
print()