programming/Python

Python 기초, 자료형3(튜플 자료형, 딕셔너리 자료형)

코딩하는 핑가 2020. 8. 26. 16:20
반응형

1. 튜플(tuple)

- 리스트는 []로 둘러싸고, 튜플은 ()으로 둘러쌈

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

>>> t1 = ()
>>> t2 = (1,)
>>> t3 = (1, 2, 3)
>>> t4 = 1, 2, 3
>>> t5 = ('a', 'b', ('ab', 'cd'))

- t2 = (1,)처럼 1개의 요소만을 가질 때는 요소 뒤에 콤마(,)를 반드시 붙여야 함

- t4 = 1, 2, 3처럼 괄호( )를 생략해도 무방

 

* 튜플과 리스트의 가장 큰 차이 : 값을 변화시킬 수 있는지

 

* 튜플 다루기 ( 인덱싱, 슬라이싱, 더하기, 곱하기, 길이 구하기 )

>>> t1 = (1, 2, 'a', 'b')
>>> t1[0]
1
>>> t1[3]
'b'


>>> t1 = (1, 2, 'a', 'b')
>>> t1[1:]
(2, 'a', 'b')


>>> t1 = (1, 2, 'a', 'b')
>>> t2 = (3, 4)
>>> t1 + t2
(1, 2, 'a', 'b', 3, 4)


>>> t2 = (3, 4)
>>> t2 * 3
(3, 4, 3, 4, 3, 4)


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

 

2. 딕셔너리(Dictionary)

- 대응 관계를 나타내는 자료형 : 연관 배열(Associative array) 또는 해시(Hash)라고 함

- 사용 예 : 4명의 사람의 각자의 특기를 표현할 수 있는 방법

- 예 : 단어(key) - people / 뜻(value) - 사람

- 리스트나 튜플처럼 순차적으로 해당 요솟값을 구하지 않고 Key를 통해 Value를 얻음

{Key1:Value1, Key2:Value2, Key3:Value3, ...}

* Key에는 변하지 않는 값을 사용하고, Value에는 변하는 값과 변하지 않는 값 모두 사용할 수 있다.

* 딕셔너리의 Value 값에 리스트도 넣을 수 있다.

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

>>> a = { 'a': [1,2,3]}

 

* 쌍 추가, 삭제

>>> a = {1: 'a'}
>>> a[2] = 'b'
>>> a
{1: 'a', 2: 'b'}
>>> a['name'] = 'pey'
>>> a
{1: 'a', 2: 'b', 'name': 'pey'}

>>> a[3] = [1,2,3]
>>> a
{1: 'a', 2: 'b', 'name': 'pey', 3: [1, 2, 3]}



>>> del a[1]
>>> a
{2: 'b', 'name': 'pey', 3: [1, 2, 3]}

 

* Key 사용해 Value 얻기

>>> grade = {'pey': 10, 'julliet': 99}
>>> grade['pey']
10
>>> grade['julliet']
99

>>> a = {1:'a', 2:'b'}
>>> a[1]
'a'
>>> a[2]
'b'

>>> a = {'a':1, 'b':2}
>>> a['a']
1
>>> a['b']
2

>>> dic = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
>>> dic['name']
'pey'
>>> dic['phone']
'0119993323'
>>> dic['birth']
'1118'

- 리스트나 튜플, 문자열의 요솟값을 얻고자할 때는 인덱싱이나 슬라이싱 기법 중 하나를 사용함

- 딕셔너리는 Key를 이용하는 한 가지 방법만 사용함

- a[1]은 Key에 해당하는 1을 나타냄 ( 인덱싱 방법을 적용할 수 없음 )

* 주의사항

- 중복되는 Key 값을 설정해 놓으면 하나를 제외한 나머지 것들이 모두 무시됨

- Key에 리스트는 쓸 수 없지만 튜플은 쓸 수 있음

 

* 딕셔너리 관련 함수

- Key 리스트 만들기 (keys)

>>> a = {'name': 'pey', 'phone': '0119993323', 'birth': '1118'}
>>> a.keys()
dict_keys(['name', 'phone', 'birth'])


>>> for k in a.keys():
...    print(k)
...
name
phone
birth

>>> list(a.keys())
['name', 'phone', 'birth']

- dict_keys 객체는 위의 for문과 같이 사용할 수 있음

- 겉보기에는 리스트를 사용하는 것과 차이가 없지만 리스트 고유의 append, insert, pop, remove, sort 함수를 수행할 수 없다.

- 그래서 list로 변환하려면 맨 밑과 같이 사용해야함

 

- Value 리스트 만들기(values)

>>> a.values()
dict_values(['pey', '0119993323', '1118'])

 

- Key, Value 쌍 얻기(items) / 모두 지우기(clear)

>>> a.items()
dict_items([('name', 'pey'), ('phone', '0119993323'), ('birth', '1118')])

>>> a.clear()
>>> a
{}

 

- Key로 Value 얻기(get), 해당 Key가 딕셔너리 안에 있는지 조사하기(in)

>>> a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
>>> a.get('name')
'pey'
>>> a.get('phone')
'0119993323'

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


>>> a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
>>> 'name' in a
True
>>> 'email' in a
False

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

- get 사용 시 None 결과값은 "거짓" 이라는 뜻

 

점프 투 파이썬

반응형