딕셔너리는 값(value)에 상응하는 고유한 키(key)를 지정합니다.
즉, key-value 형태로 이루어져있습니다.
키는 대부분 문자열이지만 불변하는 파이썬의 어떤 타입도 될 수 있습니다.
딕셔너리는 항목의 순서를 따지지 않습니다.
다른 언어에서는 딕셔너리를 연관 배열, 해시, 해시맵 등이라고 부릅니다.
파이썬에서는 딕셔너리를 딕트라고도 부릅니다.
딕셔너리 생성
중괄호{}안에 콤바로 구분된 키:값 쌍을 지정합니다.
empty_dict={}
dict={'day':'2022년 9월 9일',
'시간':'오후 5시 40분',
'장소':'우리집',
'좋아하는 숫자':'01'}
print(dict['시간']) #출력:오후 5시 40분
print(dict) #출력:{'day': '2022년 9월 9일', '시간': '오후 5시 40분', '장소': '우리집', '좋아하는 숫자': '01'}
딕셔너리로 변환하기: dict()
dict() 함수를 사용해서 두 값으로 이루어진 시퀀스를 딕셔너리로 변환할 수 있습니다.
각 시퀀스의 첫 번째 항목은 키(key), 두번째 항목은 값(value)로 사용됩니다.
list=[['지역','서울'],['스마트폰','아이폰']]
dict_test=dict(list)
print(dict_test) #출력:{'지역': '서울', '스마트폰': '아이폰'} ==>이 순서는 바뀔수 있습니다.
print(dict_test['스마트폰']) #출력:아이폰
------------------------------------------------------------------------------------------
test=[('지역','서울'),('스마트폰','아이폰')]
dict_test=dict(test)
print(dict_test) #출력:{'지역': '서울', '스마트폰': '아이폰'}아이폰
print(dict_test['스마트폰']) #출력:아이폰
------------------------------------------------------------------------------------------
test=['ab','cd','ef']
dict_test=dict(test)
print(dict_test) #출력:{'a': 'b', 'c': 'd', 'e': 'f'}
print(dict_test['e']) #출력:f
항목 추가/변경하기:[key]
키가 딕셔너리에 이미 존재하는 경우, 그 값은 새 값으로 대체됩니다.
키가 존재하지 않는 경우, 새 값이 키와 사전에 추가됩니다.
리스트와 달리 딕셔너리를 할당할 때는 인덱스의 범위가 벗어나는 예외에 대해 걱정할 필요가 없습니다.
dict_test={'day':'2022년 9월 9일',
'시간':'오후 5시 40분',
'장소':'우리집',
'좋아하는 숫자':'01'}
dict_test['전공']='컴공'
print(dict_test['전공']) #출력:컴공
print(dict_test) #출력:{'day': '2022년 9월 9일', '시간': '오후 5시 40분', '장소': '우리집', '좋아하는 숫자': '01', '전공': '컴공'}
딕셔너리 결합하기: update()
first={'a':1,'b':2}
second={'b':3,'c':4}
first.update(second)
print(first) #출력:{'a': 1, 'b': 3, 'c': 4}
만약에 두 딕셔너리에 키 값이 겹친다면, ( ) 속에 있는딕셔너리가 경쟁에서 이깁니다.
키와 del로 항목 삭제
test={'a':1,'b':2}
del test['a']
print(test) #출력:{'b': 2}
모든 항목 삭제: clear()
test={'a':1,'b':2}
test.clear()
print(test) #출력:{}
또는
test={'a':1,'b':2}
test={}
print(test) #출력:{}
빈 딕셔너리를 할당해도 됩니다.
key 존재 여부 확인: in
test={'a':1,'b':2}
print('b' in test) #출력:True
항목 얻기:[key], get()
test={'a':1,'b':2}
print(test['a']) #출력:1
print(test.get('a')) #출력:1
print(test.get('c')) #출력:None
print(test.get('c','Not Exist')) #출력:Not Exist
모든 키, 값 얻기: keys(), values()
test={'a':1,'b':2}
print(test.keys()) #출력:dict_keys(['a', 'b'])
list_test=list(test.keys())
print(list_test) #출력:['a', 'b']
아래 코드와 같이 list()를 호출해서 dict_keys객체를 리스트로 변환하는 응용도 가능합니다.
test={'a':1,'b':2}
print(test.values()) #출력:dict_values([1, 2])
list_test=list(test.values())
print(list_test) #출력:[1, 2]
모든 쌍의 key-value 얻기: items()
test={'a':1,'b':2}
print(test.items()) #출력:dict_items([('a', 1), ('b', 2)])
list_test=list(test.items())
print(list_test) #출력:[('a', 1), ('b', 2)]
각 키와 값은 (key,value) 와 같이 튜플로 반환됩니다.
할당:=, 복사: copy()
test={'a':1,'b':2}
testA=test
testA['a']=8
print(test['a']) #출력:8
할당 '=' 같은 경우에는 리스트와 마찬가지로 원본에도 영향을 미칩니다. (마치 포인터같처럼)
test={'a':1,'b':2}
testB=test.copy()
testB['a']=8
print(test['a']) #출력:1
그러나 복사 'copy()'같은 경우에는 말 그대로 복사기 때문에 영향을 미치지 않습니다.
딕셔너리의 키는 불변하기 때문에 리스트,틱셔너리,셋은 다른 딕셔너리의 키가 될 수 없는데,
튜플은 딕셔너리의 키가 될 수 있습니다.
'Python' 카테고리의 다른 글
[Python] 라인 유지하기: \ (0) | 2022.09.23 |
---|---|
[Python] 셋(Set) (0) | 2022.09.23 |
[Python] 튜플(tuple) (0) | 2022.09.09 |
[Python] 리스트(List) (0) | 2022.09.08 |
[Python] 문자열 다루기 (0) | 2022.09.07 |