- Python 기초 문법(dictionary 다루기)
Date:
Dictionary 다루기
setdefault
- dictionary에 key,value값을 추가해줌
x = {'a' : 10, 'b' : 20, 'c' : 30, 'd' : 40}
x.setdefault('e')
x.setdefault('f', 100)
print(x)
result : {‘a’: 10, ‘b’: 20, ‘c’: 30, ‘d’: 40, ‘e’: None, ‘f’: 100}
update
- dictionary의 key에 해당하는 value값을 수정 및 추가 가능
dic.update({key:'value'})
형식으로 사용(key는 숫자, 튜플 등 가능함)- key가 문자열 형태이면
dic.update(key='value')
형식으로 사용 가능
y={1:'one',2:'two'}
y.update({1:'ONE',3:'THREE'})
y.update(a="에")
print(y)
result : {1: ‘ONE’, 2: ‘two’, 3: ‘THREE’, ‘a’: ‘에’}
list 형식으로 update
[[key1,value1],[key2,value2]]
형식으로 update가능
y={1:'one',2:'two'}
y.update([[3,'Three'],[4,'Four']])
print(y)
result : {1: ‘one’, 2: ‘two’, 3: ‘Three’, 4: ‘Four’}
pop(삭제)
- dictionary 내에서 key-value 값을 삭제한 후 value 반환
- 만약 key값이 없을 경우에 대한 처리기능 있음
dic.pop(key,'key없을경우 출력')
형식으로 사용
y={1:'one',2:'two'}
print(y.pop(1,"key 없음"))
print(y.pop(1,"key 없음"))
result :
one
key 없음
popitem(맨뒤 삭제)
- dictionary는 key-value 묶음으로 되어있는데, 이 묶음을 item이라고함
- 맨 뒤에 item을 반환하고, dictionary 내에서 제거
dic.popitem()
형식으로 사용
y={1:'one',2:'two'}
print(y.popitem())
result : (2, ‘two’)
get
- dictionary 내에서 찾고자 하는 key를 입력하면 Value 반환
- pop과 다르게 항목이 삭제되지 않고 가져오기만함
y={1:'one',2:'two'}
print(y.get(1))
result : ‘one’
keys, values, items
- keys는 dictionary의 key들을 가져옴
- values는 dictionary의 value들을 가져옴
- dict_keys() type이기 때문에 sequecne 자료형 처럼 subscriptable할 수 없음
x={'a':10,'b':20,'c':30,'d':40}
print(f'keys = {x.keys()}')
print(f'values = {x.values()}')
print(f'items = {x.items()}')
result :
keys = dict_keys([‘a’, ‘b’, ‘c’, ‘d’])
values = dict_values([10, 20, 30, 40])
items = dict_items([(‘a’, 10), (‘b’, 20), (‘c’, 30), (‘d’, 40)])
fromkeys(w. list, tuple)
- 리스트나 튜플을 key값으로 하여 dictionary 생성
dict.fromkeys(keys,value)
형식으로 사용- value 지정 안해주면 None으로 자동 저장
keys = ['a','b','c','d']
x=dict.fromkeys(keys)
y=dict.fromkeys(keys,100)
print(f'x = {x}')
print(f'y = {y}')
result :
x = {‘a’: None, ‘b’: None, ‘c’: None, ‘d’: None}
y = {‘a’: 100, ‘b’: 100, ‘c’: 100, ‘d’: 100}
dictionary 표현식
print({key : value for key,value in dict.fromkeys( ['a','b','c','d']).items()})
print({key : 0 for key in dict.fromkeys( ['a','b','c','d']).keys()})
result :
{‘a’: None, ‘b’: None, ‘c’: None, ‘d’: None}
{‘a’: 0, ‘b’: 0, ‘c’: 0, ‘d’: 0}
Dictionary 안에 Dictionary
딕셔너리 = {key1:{keyA:valueA},key2:{keyB:valueB}}
형식으로 된 형태- key값을 연속으로 사용하여 value값 가져올 수 있음
x={'a':{'A' :10},'b':{'B':20}}
print(x['a']['A'])
result : 10
dictionary 할당과 복사
- list와 동일하게 dictionary도 복사할 경우 메모리를 공유하여하 나를 변경하면, 다른 하나도 변경됨
- dictionary 복사 시 모든 item을 하나씩 복사해줘야함
- dic.copy()를 사용하면 새롭게 메모리를 할당하여 할 수 있음
x={'a':10,'b':20,'c':30,'d':40}
y=x
z=x.copy()
k={k:v for k,v in x.items()}
print("x, y 메모리 비교 : ",x is y)
print("x, z 메모리 비교 : ",x is z)
print("x, k 메모리 비교 : ",x is k)
result :
x, y 메모리 비교 : True
x, z 메모리 비교 : False
x, k 메모리 비교 : False
deepcopy
- 중첩된 dictionary의 경우는 copy로 해도 원본과 복사본 모두 변경됨
- 이럴땐 import copy 모듈에 있는 deepcopy 함수를 이용해야함
clear
- dictionary 전체 item을 제거
dic.clear()
형식으로 사용
📌reference
💡 수정 필요한 내용은 댓글이나 메일로 알려주시면 감사하겠습니다!💡
댓글