[Python] Dictionary

DongHyeon Jung·2022년 9월 17일
0

Python

목록 보기
3/8
post-thumbnail

딕셔너리

  • 순서가 없는 자료구조
  • 변경할 수 있다
  • 키 - 값 의 형태이다
  • 리스트처럼 크기를 늘릴 수 있다
>>> person = {'Name': 'Ford Prefect', "Gender": 'Male', 'Occupation': 'Researcher'}

# 원하는 value 검색
>>> person['Name']
Ford Prefect

# key, value 추가
>>> person['Age'] = 21

(참고로 C++ 과 자바에서는 딕셔너리를 map이라고 부르며, 루비는 hash라고 부른다)

어떤 데이터?

두개의 열과 여러 데이터 행을 갖는데이터를 위해 사용된다
즉 테이블이라고도 볼 수 있다

장점

  • 검색이 매우 빠르다
  • 세부 정보 검색 기능, 데이터 순서보단 키와 광련된 값을 빨리 반환
  • 해싱 알고리즘 덕분에 빠르게 처리가 가능함

빈도수 갱신하기

예제 1)

found = {}

found['a'] = 0
found['e'] = 0
found['i'] = 0
found['o'] = 0
found['u'] = 0

>>> found
{'a': 0, 'e': 0, 'i': 0, 'o': 0, 'u': 0}

>>> found['a'] = found['a'] + 1
>>> found
{'a': 1, 'e': 0, 'i': 0, 'o': 0, 'u': 0}

예제 2)

found = {}  
  
found['a'] = 0  
found['e'] = 0  
found['i'] = 0  
found['o'] = 0  
found['u'] = 0  
  
for k in found:  
    print(k, 'was found', found[k], 'time(s).')

a was found 0 time(s).
e was found 0 time(s).
i was found 0 time(s).
o was found 0 time(s).
u was found 0 time(s).
  • 파이썬의 for루프로 딕셔너리를 반복할 수 있다
  • 각 반복 루프에서 key는 루프 변수에 할당되며, key를 이용해서 데이터값에 접근 가능

하지만 위의 방식보다는 items라는 내장 메서드를 이용해서 key, value를 접근이 가능하다

vowels = ['a', 'e', 'i', 'o', 'u']  
  
word = input("Provide a word: ")  
  
found = {}  
  
for letter in word:  
    if letter in vowels:
	    found.setdefault(letter, 0)  
        found[letter] += 1  
  
for key, value in sorted(found.items()):  
    print(key, 'was found', value, 'time(s).')

setdefault() 를 이용해서 필요한 초기화를 해주고 keyError를 방지할 수도 있다

런타임 keyError 해결하기

초기화 코드를 삭제하면 KeyError라는 런타임 에러가 발생한다

Traceback (most recent call last):
  File "/Users/jayden/PycharmProjects/pythonProject2/vowels.py", line 9, in <module>
    found[letter] += 1
KeyError: 'a'

이것을 관련된 key를 찾을 수 없을 때 발생하는 에러이다

이때 in연산자로 key가 존재하는지 먼저 확인해서 런타임에러를 방지한다

fruits = {}  
  
if 'apple' in fruits:  
    fruits['apple'] += 1  
else:  
    fruits['apple'] = 1

# {'apple': 1}

0개의 댓글