이미지 출처: https://wikidocs.net/192339
딕셔너리 사전형태의 자료구조를 알아보자.
딕셔너리 사용법
파이썬의 딕셔너리(Dictionary)는 키(key)와 값(value)의 쌍으로 구성된 컬렉션입니다. 딕셔너리는 가변적이며(mutable), 키의 유일성과 순서 없음(unordered)이라는 특징을 가지고 있습니다. 사전형태는 실무나 웹, 어플리케이션을 개발할때 가장 많이 사용된다고 한다.😁 어렵지 않으니 코드를 보면서 천천히 이해해보자.
a = {'Name' : 'Kim','phone' : '01033337777', 'birth' : '990620'} # Key와 value로 이루어짐 b = {0 : 'Hello Python'} c ={'arr' :[1, 2, 3, 4]} d = { 'Name' : 'Messi', 'City' : 'Paris', 'Age' : 35, 'Grade' : 'S', 'Status': True } # 데이터가 많을때는 이렇게 하면 보기 편하다. e = dict([ ('Name', 'Messi'), ('City', 'Paris'), ('Age', 35), ('Grade', 'S'), ( 'Status', True), # 콜론도 튜플에서는 콤마 ]) # 리스트의 튜플 형태로 선언하는데 보통 이방법은 사용x f = dict( Name='Messi', City='Paris', Age=35, Grade='S', Status=True ) # 위에것을 개선한것, e보다 f방식이 훨씬 편하다. 저는 주로 f방식이나 d방식을 사용하고 짧을경우 처음방식을 사용합니다. print('a - ',type(a), a) a - <class 'dict'> {'Name': 'Kim', 'phone': '01033337777', 'birth': '990620'} print('b - ',type(b), b) >>> b - <class 'dict'> {0: 'Hello Python'} print('c - ',type(c), c) >>> c - <class 'dict'> {'arr': [1, 2, 3, 4]} print('d - ',type(d), a) >>> d - <class 'dict'> {'Name': 'Kim', 'phone': '01033337777', 'birth': '990620'} print('e - ',type(e), e) >>> e - <class 'dict'> {'Name': 'Messi', 'City': 'Paris', 'Age': 35, 'Grade': 'S', 'Status': True} print('f - ',type(f), f) >>> f - <class 'dict'> {'Name': 'Messi', 'City': 'Paris', 'Age': 35, 'Grade': 'S', 'Status': True}
딕셔너리의 key값을 이용해서 값을 출력해보자
a = {'Name' : 'Kim','phone' : '01033337777', 'birth' : '990620'} b = {0 : 'Hello Python'} c ={'arr' :[1, 2, 3, 4]} f = dict( Name='Messi', City='Paris', Age=35, Grade='S', Status=True ) print('a - ', a['name1']) # Key 존재x -> 에러발생 >>> KeyError: 'name1' print('a - ', a.get('name1')) # get으로 할때 키가없는 경우에는 오류가 아니라 None 으로 나온다. 안정적 개발 가능 >>> a - None print('b - ', b[0]) # get을 이용해서 값을 가져올때와 같다. >>> b - Hello Python print('b - ', b.get(0)) >>> b - Hello Python print('c - ', c['arr']) >>> c - [1, 2, 3, 4] print('c -', c.get('arr')) >>> c - [1, 2, 3, 4] print('f - ', f.get('City')) >>> f - Paris print('f - ', f.get('Age')) >>> f - 35
a[key] = 'values'
추가하고싶은 key값과 value 값을 위와같이 하면 딕셔너리가 추가된다.
a = {'Name' : 'Kim','phone' : '01033337777', 'birth' : '990620'} a['address'] = 'seoul' print('a - ', a) >>> a - {'Name': 'Kim', 'phone': '01033337777', 'birth': '990620', 'address': 'seoul'} a['rank'] = [1,2,3] print('a - ', a) >>> a - {'Name': 'Kim', 'phone': '01033337777', 'birth': '990620', 'address': 'seoul', 'rank': [1, 2, 3]} # 마지막 부분에 딕셔너리가 추가되었다.
딕셔너리의 길이는 키의 갯수를 의미한다.
a = {'Name' : 'Kim','phone' : '01033337777', 'birth' : '990620'} b = {0 : 'Hello Python'} c ={'arr' :[1, 2, 3, 4]} d = { 'Name' : 'Messi', 'City' : 'Paris', 'Age' : 35, 'Grade' : 'S', 'Status': True } print('a - ', len(a)) # 키의 갯수 >>> a - 3 print('b - ', len(b)) >>> b - 1 print('c - ', len(c)) >>> c - 1 print('d - ', len(d)) >>> d - 5
a = {'Name' : 'Kim','phone' : '01033337777', 'birth' : '990620'} b = {0 : 'Hello Python'} c ={'arr' :[1, 2, 3, 4]} d = { 'Name' : 'Messi', 'City' : 'Paris', 'Age' : 35, 'Grade' : 'S', 'Status': True } # key값들만 가져온다. print('a - ', a.keys()) >>> a - dict_keys(['Name', 'phone', 'birth']) print('b - ', b.keys()) >>> b - dict_keys([0]) print('c - ', c.keys()) >>> c - dict_keys(['arr']) print('d - ', d.keys()) >>> d - dict_keys(['Name', 'City', 'Age', 'Grade', 'Status']) -------------------------------------------------------------- # 리스트로 형변환하면 더편하게 확인가능 print('a - ', list(a.keys())) >> a - ['Name', 'phone', 'birth'] print('b - ', list(b.keys())) >> b - [0] -------------------------------------------------------------- # value값들만 가져온다. print('a - ', a.values()) >>> a - dict_values(['Kim', '01033337777', '990620']) print('b - ', b.values()) >>> b - dict_values(['Hello Python']) print('c - ', c.values()) >>> c - dict_values([[1, 2, 3, 4]]) -------------------------------------------------------------- print('a - ', list(a.values())) >>> a - ['Kim', '01033337777', '990620'] print('b - ', list(b.values())) >>> b - ['Hello Python'] -------------------------------------------------------------- # key와 value를 모두 가져온다. 리스트로 둘러싸여서 하나의 튜플형태로 출력 # 딕셔너리 선언 e의 형태로 나온다. print('a - ', a.items()) >>> a - dict_items([('Name', 'Kim'), ('phone', '01033337777'), ('birth', '990620')]) print('b - ', b.items()) >>> b - dict_items([(0, 'Hello Python')]) print('c - ', c.items()) >>> c - dict_items([('arr', [1, 2, 3, 4])]) -------------------------------------------------------------- # 딕셔너리를 e에서 선언했을때 리스트안에 튜플형태로 선언한 값그대로 반환, 형 변환하면 처음 선했을때 키와 벨류를 튜플형태로 리스트로 변환해서 출력 print('a - ', list(a.items())) >>> a - [('Name', 'Kim'), ('phone', '01033337777'), ('birth', '990620')] print('b - ', list(b.items())) >>> b - [(0, 'Hello Python')] -------------------------------------------------------------- # 딕셔너리에서 pop 메서드는 특정 키와 그에 해당하는 값을 딕셔너리에서 제거하면서 그 값을 반환하는 데 사용 print('a - ', a.pop('Name')) >>> a - Kim print('a - ', a) >>> a - {'phone': '01033337777', 'birth': '990620'} print('c - ', c.pop('arr')) >>> c - [1, 2, 3, 4] print('c - ', c) >>> c - {} -------------------------------------------------------------- """popitem()은 파이썬 3.7 이전 버전은 임의로(랜덤으로) 가져왔지만, python 3.7 버전 이후로는 마지막에 추가된 순서로 꺼내지는거라고 합니다. (LIFO : last in first out) 즉, pop()과 같다고 보면 될 것 같습니다.""" print('f - ', f.popitem()) >>> f - ('Status', True) print('f - ', f) # Status가 사라진것을 알 수 있다. >>> f - {'Name': 'Messi', 'City': 'Paris', 'Age': 35, 'Grade': 'S'} -------------------------------------------------------------- # in 연산자로 키 조회가능 print('a - ', 'birth' in a) >>> a - True print('b - ', 'City' in b) >>> b - False
a[key] = 'new_values'
기존의 key값에 새로운 values를 넣어주면된다.
a = {'Name' : 'Kim','address' : 'seoul', 'phone' : '01033337777', 'birth' : '990620'} a['address'] = 'busan' print('a - ', a) >>> a - {'Name': 'Kim', 'address': 'busan', 'phone': '01033337777', 'birth': '990620'} -------------------------------------------------------------- # 다른수정 방법 a.update(birth = '910904') print('a - ', a) >>>> a - {'Name': 'Kim', 'address': 'busan', 'phone': '01033337777', 'birth': '910904'}
내용이 상당히 많은데 어렵지 않으니 복습하면 쉬워질것이다.
다음에는 마지막 자료구조형인 집합을 알아보자.!!🙂