본문 바로가기

카테고리 없음

Day02. 딕셔너리(Dictionary)

딕셔너리(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
= [[12], [23], [36]]
print dict(a)
 
print '=' * 20
 
= [(12), (23), (36)]
print type(a)
print dict(a)
 
print '=' * 20
 
= ((12), (23), (36))
print type(a)
print dict(a)
print type(a)
 
<<<<<실행결과>>>>>
{122336}
====================
<type 'list'>
{122336}
====================
<type 'tuple'>
{122336}
<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
= {1 : 2244 : 5}
print a
a.clear()
print a
 
<<<<<실행결과>>>>>
{122445}
{}
cs


##in

- key값 존재 확인

1
2
3
4
5
6
7
8
9
= {'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
= {'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()
 
= 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
= {11 : 34 : 914 : 2221 : 205 : 82 : 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




반응형