사전
이전 연구를 통해 우리는 리스트와 튜플을 사용하여 주문된 세트를 나타낼 수 있다는 것을 알 수 있습니다. 이전 예에서는 리스트를 사용하여 사용자의 닉네임을 저장했습니다
user=['liangdianshui','twowater','两点水']
사용자의 계정도 기록해야 한다면 어떻게 될까요?
목록을 사용하면 다음과 같이 해결할 수 있습니다.
user=[['liangdianshui','111111'],['twowater','222222'],['两点水','333333']]
하지만 이렇게 표현하는 것은 불편하고, 닉네임을 기준으로 해당 닉네임을 찾기가 어렵고, 목록이 길수록 시간이 오래 걸립니다. 이번에는 dict(딕셔너리)를 사용하여 표현할 수 있습니다. 네, Python에는 사전(dict)이 내장되어 있습니다. dict의 전체 이름은 JAVA의 map과 동일합니다. 값) 저장이 가능하며 검색 속도가 매우 빠릅니다.
user={'liangdianshui':'111111' ,'twowater':'222222' ,'两点水':'333333'}
1. dict(사전) 생성
Dictionary는 변경 가능한 또 다른 컨테이너 모델이며 모든 유형의 객체를 저장할 수 있습니다.
사전의 각 키-값(키=>값) 쌍은 콜론(:)으로 구분되며, 각 쌍은 쉼표(,)로 구분됩니다. 전체 사전은 중괄호({})로 묶입니다. 형식은 다음과 같습니다. 표현:
dict = {key1 : value1, key2 : value2 }
참고: 키는 고유해야 하지만 값은 그렇지 않습니다. 값은 모든 데이터 유형이 될 수 있지만 키는 변경할 수 없어야 합니다.
dict(사전) 인스턴스 만들기:
dict1={'liangdianshui':'111111' ,'twowater':'222222' ,'两点水':'333333'} dict2={'abc':1234,1234:'abc'}
2. dict(사전)에 액세스
#-*-coding:utf-8-*- dict1={'liangdianshui':'111111' ,'twowater':'222222' ,'两点水':'333333'} print(dict1)
출력 결과:
{'liangdianshui': '111111', 'twowater': '222222', '两点水': '333333'}
여기에서 주목해야 할 점은: 이 키가 사전에 존재하지 않으면 오류가 발생한다는 것입니다. 보고됩니다.
3. dict(사전) 수정
사전에 새 콘텐츠를 추가하는 방법은 새 키/값 쌍을 추가하거나 기존 키/값 쌍을 수정 또는 삭제하는 것입니다.
#-*-coding:utf-8-*- dict1={'liangdianshui':'111111' ,'twowater':'222222' ,'两点水':'333333'} print(dict1) # 新增一个键值对 dict1['jack']='444444' print(dict1) # 修改键值对 dict1['liangdianshui']='555555' print(dict1)
출력 결과:
{'liangdianshui': '111111', 'twowater': '222222', '两点水': '333333'} {'liangdianshui': '111111', 'twowater': '222222', '两点水': '333333', 'jack': '444444'} {'liangdianshui': '555555', 'twowater': '222222', '两点水': '333333', 'jack': '444444'}
4, dict(사전) 삭제
del을 통해 dict(사전)의 요소를 삭제할 수 있고, dict(사전)도 삭제할 수 있습니다
clear() 메소드를 호출하여 사전의 모든 요소를 삭제할 수 있습니다
#-*-coding:utf-8-*- dict1={'liangdianshui':'111111' ,'twowater':'222222' ,'两点水':'333333'} print(dict1) # 通过 key 值,删除对应的元素 del dict1['twowater'] print(dict1) # 删除字典中的所有元素 dict1.clear() print(dict1) # 删除字典 del dict1
출력 결과:
{'liangdianshui': '111111', 'twowater': '222222', '两点水': '333333'} {'liangdianshui': '111111', '两点水': '333333'} {}
5. dict(사전) 사용 시 주의 사항
(1) dict(사전)는 키가 두 번 생성되는 것을 허용하지 않지만 dict( 사전) 키 값이 두 번 할당되면 마지막에 할당된 값이 우선 적용됩니다.
예:
#-*-coding:utf-8-*- dict1={'liangdianshui':'111111' ,'twowater':'222222' ,'两点水':'333333','twowater':'444444'} print(dict1) print(dict1['twowater'])
출력 결과:
{'liangdianshui': '111111', 'twowater': '444444', '两点水': '333333'} 444444
(2) dict(사전) 키는 변경할 수 없어야 하지만 키는 변경할 수 없습니다. 숫자, 문자열 또는 튜플은 목록으로 작동하지만 목록을 사용할 수는 없습니다
예:
#-*-coding:utf-8-*- dict1={'liangdianshui':'111111' ,123:'222222' ,(123,'tom'):'333333','twowater':'444444'} print(dict1)
출력 결과:
{'liangdianshui': '111111', 123: '222222', (123, 'tom'): '333333', 'twowater': '444444'}
(3) dict의 내부 저장소 순서와 순서 사이에는 관계가 없습니다. 딕트는 키 배치
목록과 비교하여 다음과 같은 특징이 있습니다.
검색 및 삽입 속도가 매우 빠르며 키 수가 증가해도 느려지지 않습니다.
많은 메모리가 필요합니다.
목록은 그 반대입니다.
검색 요소가 늘어날수록 삽입 시간도 늘어납니다
공간을 거의 차지하지 않고 메모리도 거의 낭비하지 않습니다
6. (사전)
메서드 및 함수 | 설명 |
cmp(dict1, dict2) | 두 개의 사전 요소 비교 |
len(dict) | 사전 요소 수 계산 |
str (딕셔너리) | 사전의 인쇄 가능한 문자열 표현을 출력 |
type(variable) | 입력 변수 유형을 반환하고, 변수가 사전인 경우 사전 유형을 반환합니다. |
dict.clear() | 모두 삭제 사전의 요소 |
dict.copy() | 사전의 얕은 복사본을 반환합니다. |
dict.values() | 사전의 모든 값을 목록으로 반환합니다 |
popitem( ) | 사전을 무작위로 반환하고 삭제합니다. |
dict.items() | (키, 값) 튜플의 탐색 가능한 배열을 목록 |