대응 관계를 나타내는 자료형을 연관 배열(Associative array) 또는 해시(Hash)라고 한다.

 

파이썬에서는 이러한 자료형을 딕셔너리(Dictionary)라고 하는데, 딕셔너리는 KeyValue라는 것을 한 쌍으로 갖는 자료형이다.

 

딕셔너리의 가장 큰 특징은 리스트나 튜플처럼 순차적으로(sequential) 해당 요소값을 구하지 않고 Key를 통해 Value를 얻는다.

 

사용법

>>> dic = {'name':'Enliven', 'phone':'01012341234', 'birth': '1210', 'etc': [1,2,3] }

 

추가하기

>>> a = {1: 'a'}

>>> a[2] = 'b'

>>> a

{2: 'b', 1: 'a'}

 

삭제하기

>>> del a[2]

>>> a

{1: 'a'}

 

Key는 중복하여 사용하면 안된다!

 

딕셔너리 관련 함수들

Key 리스트 만들기(keys)

>>> a =  {'name':'Enliven', 'phone':'01012341234', 'birth': '1210'}

>>> a.keys()

dict_keys(['name', 'phone', 'birth'])

 a.keys()는 딕셔너리 aKey만을 모아서 dict_keys라는 객체를 리턴한다.

dict_keys 객체는 다음과 같이 사용할 수 있다. 리스트를 사용하는 것과 차이가 없지만, 리스트 고유의 함수인 append, insert, pop, remove, sort등의 함수를 수행할 수는 없다.

 

>>> for k in a.keys():

... print(k)

...

phone

birth

name


dict_keys 객체를 리스트로 변환하려면 다음과 같이 하면 된다. 

>>> list(a.keys())

['phone', 'birth', 'name']

 

Value 리스트 만들기(values)

>>> a.values()

dict_values(['pey', '0119993323', '1118'])

Key를 얻는 것과 마찬가지 방법으로 Value만 얻고 싶다면 a.values()처럼 values 함수를 사용하면 된다. values 함수를 호출하면 dict_values 객체가 리턴되는데, dict_values 객체 역시 dict_keys 객체와 마찬가지로 리스트를 사용하는 것과 동일하게 사용하면 된다.

 

Key, Value 쌍 얻기(items)

>>> a.items()

dict_items([('name', 'pey'), ('phone', '0119993323'), ('birth', '1118')])

items 함수는 keyvalue의 쌍을 튜플로 묶은 값을 dict_items 객체로 돌려준다.

 

Key: Value 쌍 모두 지우기(clear)

>>> a.clear()

>>> a

{}

clear() 함수는 딕셔너리 안의 모든 요소를 삭제한다. 빈 리스트를 [ ], 빈 튜플을 ()로 표현하는 것과 마찬가지로 빈 딕셔너리도 { }로 표현한다.

 

KeyValue얻기(get)

>>> a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}

>>> a.get('name')

'pey'

>>> a.get('phone')

'0119993323'

get(x) 함수는 x라는 key에 대응되는 value를 돌려준다. 앞서 살펴보았듯이 a.get('name')a['name']을 사용했을 때와 동일한 결과값을 돌려받는다.

 

다만, 다음 예제에서 볼 수 있듯이 a['nokey']처럼 존재하지 않는 키(nokey)로 값을 가져오려고 할 경우 a['nokey']Key 오류를 발생시키고 a.get('nokey')None을 리턴한다는 차이가 있다. 어떤것을 사용할지는 여러분의 선택이다.

>>> a.get('nokey')

>>> a['nokey']

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

KeyError: 'nokey'

딕셔너리 안에 찾으려는 key 값이 없을 경우 미리 정해 둔 디폴트 값을 대신 가져오게 하고 싶을 때에는 get(x, '디폴트 값')을 사용하면 편리하다.

 

>>> a.get('foo', 'bar')

'bar'

a 딕셔너리에는 'foo'에 해당하는 값이 없다. 따라서 디폴트 값인 'bar'를 리턴한다.

 

해당 Key가 딕셔너리 안에 있는지 조사하기(in)

>>> a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}

>>> 'name' in a

True

>>> 'email' in a

False

'name'이라는 문자열은 a 딕셔너리의 key 중 하나이다. 따라서 'name' in a를 호출하면 참(True)을 리턴한다. 반대로 'email' a 딕셔너리 안에 존재하지 않는 key이므로 거짓(False)을 리턴하게 된다.

'Programming > Python' 카테고리의 다른 글

if-elif-else 문  (0) 2017.05.07
자료형(6) - 집합(Set)  (0) 2017.05.07
자료형(4) - 튜플  (0) 2017.05.07
자료형(3) - 리스트  (0) 2017.05.07
자료형(2) - 문자형  (0) 2017.05.07

튜플과 리스트의 차이점

리스트는 [ ]으로 둘러싸지만 튜플은 ( )으로 둘러싼다.

리스트는 그 값의 생성, 삭제, 수정이 가능하지만 튜플은 그 값을 바꿀 수 없다.

 

>>> t1 = ()

>>> t2 = (1,)

>>> t3 = (1, 2, 3)

>>> t4 = 1, 2, 3

>>> t5 = ('a', 'b', ('ab', 'cd'))

 

Indexing

>>> t1 = (1, 2, 'a', 'b')

>>> t1[0]

1

>>> t1[3]

'b'

 

Silcing

>>> t1 = (1, 2, 'a', 'b')

>>> t1[1:]

(2, 'a', 'b')

 

튜플 더하기

>>> t2 = (3, 4)

>>> t1 + t2

(1, 2, 'a', 'b', 3, 4)

 

튜플 반복

>>> t2 * 3

(3, 4, 3, 4, 3, 4)



참조 : 점프 투 파이(썬https://wikidocs.net/15)

'Programming > Python' 카테고리의 다른 글

자료형(6) - 집합(Set)  (0) 2017.05.07
자료형(5) - Dictionary  (0) 2017.05.07
자료형(3) - 리스트  (0) 2017.05.07
자료형(2) - 문자형  (0) 2017.05.07
자료형(1) - 숫자형  (0) 2017.05.07

리스트

>>> a = [1,2,3,4,5,6,7,8]

>>> b = [1, 2, ['I', 'am']]

 

리스트의 인덱싱

a[0] == 1

a[-1] == 8

b[2] == [‘I’, ‘am’]

b[2][1] == ‘am’

리스트의 슬라이싱

a[0:2] == [1,2,3]

 

리스트연산자

더하기

>>> a + b

[1,2,3,4,5,6,7,8,1, 2, ['I', 'am']]

 

반복하기

>>> a * 2

[1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8]

 

리스트 수정/삭제

>>> a[0] = 10

>>> a

>>> [10,2,3,4,5,6,7,8]

 

>>> del a[0]

>>> a

>>> [2,3,4,5,6,7,8]

 

리스트 관련 함수 

리스트에 요소 추가(append)

>>> a = [1, 2, 3]

>>> a.append(4)

>>> a

[1, 2, 3, 4]

리스트 안에는 어떤 자료형도 추가할 수 있다.

 

리스트 정렬(sort)

sort 함수는 리스트의 요소를 순서대로 정렬해 준다.

>>> a = ['a', 'c', 'b']

>>> a.sort()

>>> a

['a', 'b', 'c']

 

리스트 뒤집기(reverse)

reverse 함수는 리스트를 역순으로 뒤집어 준다. 현재의 리스트를 그대로 거꾸로 뒤집을 뿐이다.

>>> a = ['a', 'c', 'b']

>>> a.reverse()

>>> a

['b', 'c', 'a']

 

위치 반환(index)

index(x) 함수는 리스트에 x라는 값이 있으면 x의 위치값을 리턴한다.

>>> a = [1,2,3]

>>> a.index(3)

2


0이라는 값은 a 리스트에 존재하지 않기 때문에 값 오류(ValueError)가 발생한다.

>>> a.index(0)

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

ValueError: 0 is not in list

 

리스트에 요소 삽입(insert)

insert(a, b)는 리스트의 a번째 위치에 b를 삽입하는 함수이다.

>>> a = [1, 2, 3]

>>> a.insert(3, 5)

[1, 2, 3, 5]

리스트 aa[3], 즉 네 번째 요소 위치에 5라는 값을 삽입하라는 뜻이다.

 

리스트 요소 제거(remove)

remove(x)는 리스트에서 첫 번째로 나오는 x를 삭제하는 함수이다.

>>> a = [1, 2, 3, 1, 2, 3]

>>> a.remove(3)

[1, 2, 1, 2, 3]

a3이라는 값을 2개 가지고 있을 경우 첫 번째 3만 제거되는 것을 알 수 있다.

 

리스트 요소 끄집어내기(pop)

pop()은 리스트의 맨 마지막 요소를 돌려주고 그 요소는 삭제하는 함수이다.

>>> a = [1,2,3]

>>> a.pop()

3

>>> a

[1, 2]

a 리스트 [1,2,3]에서 3을 끄집어내고 최종적으로 [1, 2]만 남는 것을 볼 수 있다.

 

pop(x)는 리스트의 x번째 요소를 돌려 주고 그 요소는 삭제한다.

>>> a = [1,2,3]

>>> a.pop(1)

2

>>> a

[1, 3]

a.pop(1)a[1]의 값을 끄집어낸다. 다시 a를 출력해 보면 끄집어낸 값이 삭제된 것을 확인할 수 있다.

 

리스트에 포함된 요소 x의 개수 세기(count)

count(x)는 리스트 내에 x가 몇 개 있는지 조사하여 그 개수를 돌려주는 함수이다.

>>> a = [1,2,3,1]

>>> a.count(1)

2

1이라는 값이 리스트 a2개 들어 있으므로 2를 돌려준다.

 

리스트 확장(extend)

extend(x)에서 x에는 리스트만 올 수 있으며 원래의 a 리스트에 x 리스트를 더하게 된다.

>>> a = [1,2,3]

>>> a.extend([4,5])

>>> a

[1, 2, 3, 4, 5]

>>> b = [6, 7]

>>> a.extend(b)

>>> a

[1, 2, 3, 4, 5, 6, 7]

a.extend([4,5])a += [4,5]와 동일하고, a += [4, 5]a = a + [4, 5]와 같은 표현이다.


참조 : 점프 투 파이썬 (https://wikidocs.net/14)

'Programming > Python' 카테고리의 다른 글

자료형(6) - 집합(Set)  (0) 2017.05.07
자료형(5) - Dictionary  (0) 2017.05.07
자료형(4) - 튜플  (0) 2017.05.07
자료형(2) - 문자형  (0) 2017.05.07
자료형(1) - 숫자형  (0) 2017.05.07

문자열 만들기

“” (쌍따옴표)

‘’ (따옴표)

“““ ””” (쌍따옴표 3개)

‘‘‘ ’’’ (따옴표 3개)

 

문자열 연산하기

문자열 더하기

>>> str1 = "Enlive"

>>> str2 = " is hansome!"

>>> str1 + str2

'Enliven is hansome!'

 

문자열 반복하기

>>> a = "abc"

>>> a * 3

'abcabcabc'

 

문자열 인덱싱과 슬라이싱

인덱싱(Indexing)이란 무엇인가를 "가리킨다"는 의미이고,

슬라이싱(Slicing)은 무엇인가를 "잘라낸다"는 의미이다.

>>> str = 'Enliven is hansome!'

str[0] == ‘E’ (Indexing)

str[0:6] == 'Enliven’ (Slicing)

 

문자열 포매팅

문자열 포매팅이란 쉽게 말해 문자열 내에 어떤 값을 삽입하는 방법이다.

 

코드

설명

%s

문자열 (String)

%c

문자 1(character)

%d

정수 (Integer)

%f

부동소수 (floating-point)

%o

8진수

%x

16진수

%%

Literal % (문자 % 자체)

 

문자열 관련 함수들

문자 개수 세기(count)

>>> a = "hobby"

>>> a.count('b')

2

문자열 중 문자 b의 개수를 반환한다.

 

위치 알려주기1(find)

>>> a = "Python is best choice"

>>> a.find('b')

10

>>> a.find('k')

-1

문자열 중 문자 b가 처음으로 나온 위치를 반환한다. 만약 찾는 문자나 문자열이 존재하지 않는다면 -1을 반환한다.

 

위치 알려주기2(index)

>>> a = "Life is too short"

>>> a.index('t')

8

>>> a.index('k')

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

ValueError: substring not found

문자열 중 문자 t가 맨 처음으로 나온 위치를 반환한다. 만약 찾는 문자나 문자열이 존재하지 않는다면 오류를 발생시킨다. 앞의 find 함수와 다른 점은 문자열 안에 존재하지 않는 문자를 찾으면 오류가 발생한다는 점이다.

 

문자열 삽입(join)

>>> a= ","

>>> a.join('abcd')

'a,b,c,d'

abcd라는 문자열의 각각의 문자 사이에 변수 a의 값인 ','를 삽입한다.

 

소문자를 대문자로 바꾸기(upper)

>>> a = "hi"

>>> a.upper()

'HI'

upper() 함수는 소문자를 대문자로 바꾸어 준다. 만약 문자열이 이미 대문자라면 아무런 변화도 일어나지 않을 것이다.

 

대문자를 소문자로 바꾸기(lower)

>>> a = "HI"

>>> a.lower()

'hi'

lower() 함수는 대문자를 소문자로 바꾸어 준다.

 

왼쪽 공백 지우기(lstrip)

>>> a = " hi "

>>> a.lstrip()

'hi '

문자열 중 가장 왼쪽에 있는 한 칸 이상의 연속된 공백들을 모두 지운다. lstrip에서 lleft를 의미한다.

 

오른쪽 공백 지우기(rstrip)

>>> a= " hi "

>>> a.rstrip()

' hi'

문자열 중 가장 오른쪽에 있는 한 칸 이상의 연속된 공백들을 모두 지운다. rstrip에서 rright를 의미한다.

 

양쪽 공백 지우기(strip)

>>> a = " hi "

>>> a.strip()

'hi'

문자열 양쪽에 있는 한 칸 이상의 연속된 공백들을 모두 지운다.

 

문자열 바꾸기(replace)

>>> a = "Life is too short"

>>> a.replace("Life", "Your leg")

'Your leg is too short'

replace(바뀌게 될 문자열, 바꿀 문자열)처럼 사용해서 문자열 내의 특정한 값을 다른 값으로 치환해 준다.

 

문자열 나누기(split)

>>> a = "Life is too short"

>>> a.split()

['Life', 'is', 'too', 'short']

>>> a = "a:b:c:d"

>>> a.split(':')

['a', 'b', 'c', 'd']

a.split()처럼 괄호 안에 아무런 값도 넣어 주지 않으면 공백을 기준으로 문자열을 나누어 준다. 만약 a.split(':')처럼 괄호 안에 특정한 값이 있을 경우에는 괄호 안의 값을 구분자로 해서 문자열을 나누어 준다. 이렇게 나눈 값은 리스트에 하나씩 들어가게 된다.

 

 

포맷(format) : 인덱스와 이름을 혼용해서 넣기

>>> "I ate {0} apples. so I was sick for {day} days.".format(10, day=3)

'I ate 10 apples. so I was sick for 3 days.'

위와 같이 인덱스 항목과 name=value 형태를 혼용하는 것도 가능하다.



참조 : 점프 투 파이썬 (https://wikidocs.net/13)

'Programming > Python' 카테고리의 다른 글

자료형(6) - 집합(Set)  (0) 2017.05.07
자료형(5) - Dictionary  (0) 2017.05.07
자료형(4) - 튜플  (0) 2017.05.07
자료형(3) - 리스트  (0) 2017.05.07
자료형(1) - 숫자형  (0) 2017.05.07

숫자형

 

정수

353, -102, 0

실수

123.45, -1234.5, 3.4e10(e10^1을 나타내며 e10=10^10)

8진수

0o17, 0o43 (0o로 시작한다.)

16진수

0xC0, 0xFF (0x로 시작한다.)

 

연산자

사칙연산

+, -, *, /

a**b

ab제곱연산

%

나머지를 출력 한다.

//

나눗셈 후 소수점이하를 버린다.

 


참조 : 점프 투 파이썬(https://wikidocs.net/12)

'Programming > Python' 카테고리의 다른 글

자료형(6) - 집합(Set)  (0) 2017.05.07
자료형(5) - Dictionary  (0) 2017.05.07
자료형(4) - 튜플  (0) 2017.05.07
자료형(3) - 리스트  (0) 2017.05.07
자료형(2) - 문자형  (0) 2017.05.07

+ Recent posts