본문 바로가기
공부/Python

02 파이썬 프로그래밍의 기초, 자료형 (2)

by 자피킨치 2019. 5. 2.

Do it! 점프 투 파이썬 책으로 공부하며 기록한 내용입니다
마크다운 문서에 좀더 최적화된 git 에서 보는 것을 추천합니다
git에서 보기

02 파이썬 프로그래밍의 기초, 자료형 (2)

딕셔너리 자료형

파이썬은 대응관계를 나타낼 수 있는 자료형을 갖고있다 '딕셔너리(Dictionary)'라고 한다

딕셔너리는 Key와 Value라는 것을 한 쌍으로 갖는 자료형이다.

딕셔너리 만들기

기본적인 딕셔너리의 모습

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

각각의 요소는 Key : Value 형태로 이루어져 있고 쉼표(,)로 구분되어 있다.

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

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

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

딕셔너리 쌍 추가, 삭제하기

  • 딕셔너리 쌍 추가하기

    >>> a = {1:'a'}
    >>> a[2] = 'b'        # {2:'b'}쌍 추가
    
    >>> a
    {2: 'b', 1: 'a'}
    
    >>> a['name'] = 'pey'            # {'name':'pey'} 쌍 추가 
    {'name':'pey', 2:'b', 1:'a'}
    
    >>> a[3] = [1, 2, 3]            # {3:[1, 2, 3]} 쌍 추가
    {'name':'pey', 3:[1,2,3], 2:'b', 1:'a'}
  • 딕셔너리 요소 삭제하기

    >>> del a[1]        # key가 1인 key:value쌍 삭제
    >>> a
    {'name':'pey', 3:[1,2,3], 2:'b'}

딕셔너리를 사용하는 방법

  • 딕셔너리에서 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는 중복되는 값을 가질 수 없다 (중복되는 경우 무작위의 한가지쌍을 제외하고 모두 무시된다)

    • key에는 변하지 않는 값만 사용할 수 있다 (리스트 사용시 TypeError, 튜플은 가능)

딕셔너리 관련 함수들

  • Key 리스트 만들기(keys)

    >>> a = {'name':'pey', 'phone':'0119993323', 'birth':'1118'}
    >>> a.keys()
    dict_keys(['name', 'phone', 'birth'])
    
    >>> for k in a.keys()
    ...        print(k)
    ...
    phone
    birth
    name
    
    >>>list(a.keys())
    ['phone', 'birth', 'name']
  • Value 리스트 만들기(values)

    >>> a.vlaues()
    dict_values(['pey', '0119993323', '1118'])
  • Key, Value 쌍 얻기(items)

    >>> a.items()
    dict_items([('name', 'pey'), ('phone', '0119993323'), ('birth', '1118')])
  • Key: Value 쌍 모두 지우기(clear)

    >>> a.clear()
    >>> a
    {}
  • Key로 Value얻기(get)

    >>> a = {'name':'pey', 'phone':'0119993323', 'birth':'1118'}
    >>> a.get('name')
    'pey'
    >>> a.get('phone')
    '0119993323'
    
    >>> a.get('nokey')
    # None을 리턴함
    >>> a['nokey']
    # error
    
    >>> a.get('foo', 'bar')
    'bar'            # 딕셔너리 안에 찾는 키값이 없을 경우 미리 정해진 디폴트값 리턴
  • 해당 Key가 딕셔너리 안에 있는지 조사하기(in)

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

집합 자료형

집합 자료형 이란

집합(set)은 집합에 관련된 것들을 쉽게 처리하기 위해 만들어진 자료형이다.

  • 집합 자료형 만들기

    >>> s1 = set([1, 2, 3])
    >>> s1
    {1, 2, 3}
    
    >>> s2 = set("Hello")
    >>> s2
    {'e', 'l', 'o', 'H'}

집합 자료형의 특징

  • 중복을 허용하지 않는다

  • 순서가 없다(Unordered)

  • 인덱싱을 하기 위해서는 변환이 필요하다

    >>> s1 = set([1, 2, 3])
    >>> l1 = list(s1)            # 리스트로 변환
    >>> l1
    [1, 2, 3]
    >>> l1[0]
    1
    
    >>> t1 = tuple(s1)            # 튜플로 변환
    >>> t1
    (1, 2, 3)
    >>> t1[0]
    1

집합 자료형 활용

  • 교집합, 합집합, 차집합 구하기

    >>> s1 = set([1, 2, 3, 4, 5, 6])
    >>> s2 = set([4, 5, 6, 7, 8, 9])
  • 교집합

    >>> s1 & s2
    {4, 5, 6}
    
    >>> s1.intersection(s2)
    {4, 5, 6}
  • 합집합

    >>> s1 | s2
    {1, 2, 3, 4, 5, 6, 7, 8, 9}
    
    >>> s1.union(s2)
    {1, 2, 3, 4, 5, 6, 7, 8, 9}
  • 차집합

    >>> s1 - s2
    {1, 2, 3}
    >>> s2 - s1
    {7, 8, 9}
    
    >>> s1.difference(s2)
    {1, 2, 3}
    >>> s2.difference(s2)
    {7, 8, 9}

집합 자료형 관련 함수들

  • 값 1개 추가하기 (add)

    >>> s1 = set([1, 2, 3])
    >>> s1.add(4)
    >>> s1
    {1, 2, 3, 4}
  • 값 여러 개 추가하기 (update)

    >>> s1 = set([1, 2, 3])
    >>> s1.update([4, 5, 6])
    >>> s1
    {1, 2, 3, 4, 5, 6}
  • 특정 값 제거하기 (remove)

    >>> s1 = set([1, 2, 3])
    >>> s1.remove(2)
    >>> s1
    {1, 3}

자료형의 참과 거짓

자료형 참 or 거짓
문자열 "python" True
"" False
리스트 [1, 2, 3] True
[] False
튜플 () False
딕셔너리 {} False
숫자형 0이 아닌 숫자 True
0 False
None False
>>> a = [1, 2, 3, 4]
>>> while a:
...        a.pop()
...     
4
3
2
1

>>> if []:
...     print("True")
... else:
...     print("False")
...
False

>>> if [1, 2, 3]:
...     print("True")
... else:
...     print("False")
...
True

자료형의 값을 저장하는 공간, 변수

>>> a = 1
>>> b = "python"
>>> c = [1, 2, 3]

# 변수명 = 변수에 저장할 값

변수란?

>>> a = 3
>>> b = 3
>>> a is b            # a와 b가 동일한 객체를 가리키는지 판단
True

변수를 만드는 여러 가지 방법

>>> a, b = ('python', 'life')
>>> (a, b) = 'python', 'life'        # 튜플은 괄호를 생략해도 된다 (위의 라인과 동일)
>>> [a, b] = ['python', 'life']
>>> a = b = 'python'            # 여러 개의 변수에 같은 값을 대입

>>> a = 3
>>> b = 5
>>> a, b = b, a
>>> a
5
>>> b
3

메모리에 생성된 변수 없애기

# Garbage collection
>>> a = 3
>>> b = 3
>>> del(a)
>>> del(b)

리스트를 변수에 넣고 복사하기

>>> a = [1, 2, 3]
>>> b = a
>>> a[1] = 4
>>> a
[1, 4, 3]
>>> b
[1, 4, 3]
  • [:]이용

    >>> a = [1, 2, 3]
    >>> b = a[:]
    >>> a[1] = 4
    >>> a
    [1, 4, 3]
    >>>> b
    [1, 2, 3]
  • Copy 모듈 이용

    >>> from copy import copy
    >>> b = copy(a)
    
    >>> b is a
    False

댓글0