티스토리 뷰



사전 타입은 인덱스로 개별 항목에 접근하는 배열과 달리 키 값으로 접근할 수 있는 리스트 타입 입니다. 사전은 {키:값, 키:값...}의 방식으로 선언 합니다. 사전 타입의 타입명은 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'}






댓글
댓글쓰기 폼