티스토리 뷰
사전 타입은 인덱스로 개별 항목에 접근하는 배열과 달리 키 값으로 접근할 수 있는 리스트 타입 입니다. 사전은 {키:값, 키:값...}의 방식으로 선언 합니다. 사전 타입의 타입명은 dict인데 dict()함수로 리스트를 사전으로 만들수도 있습니다. dict 로 전달할 인수는 키,값 쌍으로 구성한 리스트들을 원소로한 리스트를 넘겨주면 됩니다. 예제처럼 zip 함수로 키 리스트와 값 리스트 두개로 사전 배열을 작성할 수도 있습니다. {}는 빈 사전을 의미 합니다. 키는 스트링을 비롯한 어떠한 타입으로도 가능하며 아래의 예제 처럼 배열을 키로 가질 수도 있습니다. 또한, 사전은 내부적으로 해시 테이블을 사용하기 때문에 사용자가 입력한 순서로 저장하는 것이 아닙니다. 다시 말해서 항목간 순서가 존재하지 않습니다.
>>> a={"a":"kor", 'b':'eng', 10:'jpn'}
>>> a
{'a': 'kor', 10: 'jpn', 'b': 'eng'}
>>> a = dict([["a","kor"], ['b','eng'], [10,'jpn']])
>>> a
{'a': 'kor', 10: 'jpn', 'b': 'eng'}
>>> a = dict(zip(["a",'b',10], ["kor", 'eng', 'jpn']))
>>> a
{'a': 'kor', 10: 'jpn', 'b': 'eng'}
>>>dice = { (1,1): "snake eyes", (6,6): "box cars" }
>>>dice
{(1, 1): 'snake eyes', (6, 6): 'box cars'}
>>>dice[(1,1)]
'snake eyes'
■ 사전 타입 사용 팁
사전에의 접근은 A[키]같은 방식으로 배열의 인덱스 대신 키 값을 사용하면 됩니다. 만약 지정한 키가 없을 때는 "KeyError:"오류가 발생 합니다. 이런 오류를 예방하는 방법은 A.get(키) 함수를 사용하면 된다. get 함수는 해당하는 키가 없어도 오류를 발생시키지 않습니다. 아래의 예제와 같이 get 함수를 호출할 때 두번째 인수에 메시지를 전달하면 키가 없을때의 해당 메시지를 출력합니다.
>>> a['a']
'kor'
>>> a['c']
Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
a['c']
KeyError: 'c'
>>> a.get('a')
'kor'
>>> a.get('c')
>>> a.get('c', "c is not key!")
'c is not key!'
리스트의 경우에 항목이 없는 인덱스로 배열을 접근하면 오류가 발생하지만 사전의 경우에는 존재하지 않는 키에 값을 할당하면 바로 항목이 추가 됩니다.
>>> a
{'a': 'kor', 10: 'jpn', 'b': 'eng'}
>>> a[100]='ddd'
>>> a
{'a': 'kor', 10: 'jpn', 'b': 'eng', 100: 'ddd'}
■ 사전 연관 연산자
사전에 쓰이는 연산자들은 배열과 유사하지만("파이썬 배열(Array) - 파이썬 배우기(Python)" 참조) 몇가지 차이가 있는 것은 아래와 같습니다.
len(A)
키-값 쌍의 개수를 리턴 합니다.A.keys()
사전의 키들을 리스트로 리턴 합니다.A.values()
사전의 값들을 리스트로 리턴 합니다.A.items()
키,값 쌍으로 구성한 리스트들을 원소로한 리스트를 리턴 합니다.A.get(키, 메시지)
키에 해당하는 값을 리턴한다. 없으면 두번째 인수 리턴 합니다.A.has_key(키)
키가 존재하면 True 리턴 합니다.키 in A
사전에 지정한 키가 존재하면 True 리턴 합니다.A.clear()
사전의 모든 원소를 삭제 합니다.A.copy()
A와 동일한 새로운 사전을 생성하여 리턴 합니다.A.setdefault(키, 기본값)
get()과 비슷 합니다. 지정한 키가 있으면 해당 값을 리턴하고, 없으면 해당 키를 추가하면서 기본값을 리턴 합니다.A.update(B)
사전 B의 내용으로 A를 갱신한다. 삭제는 하지않고 수정과 추가만 처리 합니다.>>> b
{'a': 'kor', 'b': 'eng', 100: 'ddd', 10: 'xxx', 'x': None, 'z': 'qqq'}
>>> a
{'a': 'kor', 10: 'jpn', 'b': 'eng', 100: 'ddd'}
>>> a.update(b)
>>> a
{'a': 'kor', 'b': 'eng', 100: 'ddd', 10: 'xxx', 'x': None, 'z': 'qqq'}
'프로그래밍' 카테고리의 다른 글
파이썬 제어구조 2 - 파이썬 배우기(Python) (0) | 2019.03.20 |
---|---|
파이썬 제어구조 1 - 파이썬 배우기(Python) (0) | 2019.03.20 |
파이썬 배열(Array) - 파이썬 배우기(Python) (0) | 2019.03.19 |
파이썬 스칼라 타입, 논리(Boolean) - 파이썬 배우기(Python) (0) | 2019.03.19 |
파이썬 스칼라 타입, 스트링(String) - 파이썬 배우기(Python) (0) | 2019.03.18 |
- 런타임 에러 76은 경로를 찾을수 없다는 메시지 이군요. 입력하신 경로를⋯
- Set folder = fso.GetFolder(sFolder) 에서 런⋯
- [승인대기]
- 표준 시간은 제주 올레 홈페이지를 참조하시는 것이 좋을듯 하네요. 이 포⋯
- 안녕하세요. 리뷰 감사해요 소요시간이 어떻게 되나요? 저도 가보려고요
- 제주 올레길 / 까미노 데 산티아고 길 을 가봤는데 아직 해파랑 남파⋯
- 아 오르세... 제 가 갔을땐 실내 촬영이 안됬는데 지금은 된다고 하지요⋯
- 법환 포구 빌라 자리엔 원래 각종 맛집들이 있엇는데 말이죠.. 싹 밀어서⋯
- 리눅스의 쉘 환경과 같은 준비를 해주는 것으로 이해하면 좋을듯 합니다. ⋯
- 안녕하세요.. 야라바님 초면에 갑작스럽겠지만 제 생명의 은인입니다. T⋯