딕셔너리(Dictionary)
- 키와 값을 갖는 data structure
- 키는 해쉬값으로 저장됨
- 순서를 따지지 않음. 즉, 인덱스가 없다.
##dictionary생성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | empty_dict = {} print empty_dict dict1 = {'python' : 'best', 'java' : 'good', 'c++' : 'better'} print dict1 print '=' * 55 dict2 = {} dict2['python'] = 'best' dict2['java'] = 'good' print dict2 dict2['python'] = 'best222' print dict2 print dict2['java'] <<<<<실행결과>>>>> {} {'python': 'best', 'java': 'good', 'c++': 'better'} ======================================================= {'python': 'best', 'java': 'good'} {'python': 'best222', 'java': 'good'} good | cs |
##dict()
- dictionary로 변환
- 두 값으로 이루어진 시퀀스를 변환 가능. 첫번째 항목이 key, 두번째 항목이 value로 사용됨
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | a = [[1, 2], [2, 3], [3, 6]] print dict(a) print '=' * 20 a = [(1, 2), (2, 3), (3, 6)] print type(a) print dict(a) print '=' * 20 a = ((1, 2), (2, 3), (3, 6)) print type(a) print dict(a) print type(a) <<<<<실행결과>>>>> {1: 2, 2: 3, 3: 6} ==================== <type 'list'> {1: 2, 2: 3, 3: 6} ==================== <type 'tuple'> {1: 2, 2: 3, 3: 6} <type 'tuple'> | cs |
##항목 추가하고 변경하기
1 2 3 4 5 6 7 8 9 | dict1 = {'python' : 'best', 'java' : 'good', 'c++' : 'better'} dict1['c++'] = 'hello' dict1['java'] = 'love' print dict1 <<<<<실행결과>>>>> {'python': 'best', 'java': 'love', 'c++': 'hello'} | cs |
##update()
- 두 dictionary를 변경함
- 겹치는 키가 있다면 parameter로 전달되는 키 값이 overwrite된다.
1 2 3 4 5 6 7 8 9 10 | dict1 = {'python' : 'best', 'java' : 'good', 'c++' : 'better'} dict2 = {'ruby' : 'elegant', 'javascript' : 'too much', 'java' : 'soso'} dict1.update(dict2) print dict1 print dict2 <<<<<실행결과>>>>> {'java': 'soso', 'python': 'best', 'javascript': 'too much', 'ruby': 'elegant', 'c++': 'better'} {'java': 'soso', 'javascript': 'too much', 'ruby': 'elegant'} | cs |
1 2 3 4 5 6 | dict1 = {'python' : 'best', 'java' : 'good', 'c++' : 'better'} del dict1['java'] print dict1 <<<<<실행결과>>>>> {'python': 'best', 'c++': 'better'} | cs |
##clear()
- dictionary의 모든 값을 초기화
1 2 3 4 5 6 7 8 | a = {1 : 2, 2: 4, 4 : 5} print a a.clear() print a <<<<<실행결과>>>>> {1: 2, 2: 4, 4: 5} {} | cs |
##in
- key값 존재 확인
1 2 3 4 5 6 7 8 9 | a = {'1' : 2, '2': 4, '4' : 5} print '1' in a print 1 in a print a['1'] <<<<<실행결과>>>>> True False 2 | cs |
##value 얻기
- [key]로 얻거나
- .get() 함수로 얻음
1 2 3 4 5 6 7 8 9 10 | a = {'1' : 2, '2': 4, '4' : 5} print a['4'] print a.get('1') print a.get('3') print a.get('3', 'default') #3이 없으면 default를 값이라 해라 <<<<<실행결과>>>>> 5 2 None default | cs |
##모든 keys, 모든 values 얻기
- keys()
- values()
##키-값 튜플로 얻기
- items() //이 경우 리스트이지만 각 원소는 튜플
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | signals = {'green' : 'fly', 'yellow' : 'go faster', 'red' : 'stop'} signals_keys = signals.keys() signals_values = signals.values() print signals_keys print signals_values print signals.items() c = signals.items() print c <<<<<실행결과>>>>> ['green', 'red', 'yellow'] ['fly', 'stop', 'go faster'] [('green', 'fly'), ('red', 'stop'), ('yellow', 'go faster')] [('green', 'fly'), ('red', 'stop'), ('yellow', 'go faster')] | cs |
<<연습문제>>
1. a = {11 : 3, 4 : 9, 14 : 22, 21 : 20, 5 : 8, 2 : 23} 에서 키의 최소값에 대응하는 값과, 키의 최대값에 대응하는 값을 출력하시오.
1 2 3 4 5 6 7 8 9 10 11 | a = {11 : 3, 4 : 9, 14 : 22, 21 : 20, 5 : 8, 2 : 23} a_keys = a.keys() a_keys.sort() max_val = a_keys[-1] min_val = a_keys[0] sum = max_val + min_val print sum <<<<<실행결과>>>>> 23 | cs |
2. 주어진 dictionary를 가지고, 다음 문장을 번역 하시오. translator = {'This' : 'Este', 'is' : 'es', 'python' : 'piton'} => "This is python"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | translator = {'This' : 'Este', 'is' : 'es', 'python' : 'piton'} print translator.get('This'), translator.get('is'), translator.get('python') print '=' * 20 str = 'This is python' str = str.replace('This', translator['This']) str = str.replace('is', translator['is']) str = str.replace('python', translator['python']) print str <<<<<실행결과>>>>> Este es piton ==================== Este es piton | cs |
반응형