ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 5. (1) 파이썬 자료형 딕셔너리
    파이썬(Python) 강의 2019. 2. 8. 15:28

    들어가기전에

    이 포스트는 여러분이 파이썬을 설치했고 각자 원하는 IDE를 이용해 파이썬을 개발한다고 가정한다. 대화형(Interactive) 터미널을 사용해도 상관 없다. 혹시 파이썬을 설치하지 않았다면  1.파이썬 설치 및 개발환경 설정 이 포스트에서 파이썬과 파이썬 개발환경을 먼저 셋업하길 바란다. 앞서 말했듯이 반드시 실습 해 보길 바라고 30분 이상 소요하지 말라. 

    이번 포스트도 이전 포스트들과 마찬가지로 두 포스트로 나누어 딕셔너리 표현법 및 기초 연산과 유용한 함수를 나눠 설명하겠다.
    예상 소요 시간 30분 이내

    목표

    • 딕셔너리 초기화 (Dictionary Initialization)
    • 중첩 딕셔너리 (Nested Dictionary)
    • 삽입 (Insert)
    • 수정 (Update)
    • 삭제 (Delete)

    딕셔너리 초기화 (Dictionary Initialization)

    딕셔너리란 순서가 없는 컬렉션이다. 말이 참 어렵게 느껴지지만 이렇게 생각하면 된다. 딕셔너리에 무언가 저장하기 위해서는 'key'가 필요하다. 이 'key'는 딕셔너리에 저장된 값을 가져오기 위한 말 그대로 열쇠이다. 설명이 어렵게 느껴진다면 아래의 예를 보자.

    빈 딕셔너리 (Empty Dictionary)

    dic = {}
    print(dic) {}

    빈 딕셔너리는 다음과 같이 중괄호로 선언한다.

    딕셔너리 (Dictionary)

    dic = {
    'name' : 'fsoftwareengineer'
    }
    print(dic) {'name': 'fsoftwareengineer'}

    딕셔너리의 key value는 위와 같이 key : value로 나타 낼 수 있다. 자 그럼 'fsoftwareengineer'만 어떻게 가져올까?

    dic = {
    'name' : 'fsoftwareengineer'
    }
    print(dic['name']) fsoftwareengineer

    바로 dic[key]를 이용해 가져 올 수 있다. 생각해보면 간단하다. 리스트에서는 인덱스 0,1,2,3,...을 이용해 값을 가져 올 수 있었다. 딕셔너리에서는 인덱스 대신 고유값-'key'를 이용해 value를 가져 올 수 있다. 

    두개의 key-value를 가진 딕셔너리를 만들어보자.

    dic = {
    'name' : 'fsoftwareengineer', # 콤마로 구분하는 것을 잊지 말자.
    'age' : 17
    }
    print(dic) {'name': 'fsoftwareengineer', 'age': 17}

    name-fsoftwareengineer 그리고 age-17인 딕셔너리가 생성 된 것을 확인 할 수 있다.

    dic = {
    'name' : 'fsoftwareengineer',
    'age' : 17
    }
    print(dic['name'])
    print(dic['age']) fsoftwareengineer 17

    각 key를 이용해 값을 가져올 수 있음을 확인 할 수 있다. 

    중첩 딕셔너리 (Nested Dictionary)

    리스트에서 리스트 안에 또 리스트를 넣을 수 있었던 것을 기억하는가? 딕셔너리도 마찬가지이다. 딕셔너리 내부에 또 딕셔너리를 넣을 수 있다. 예를들어서 나는 펫이 잇고 펫의 정보인 이름과 펫의 나이를 'pet'이라는 키를 통에 접근하고 싶다. 그렇다면 기존에 문자열이나 숫자를 넣은 것 대신 딕셔너리를 넣어 이를 표현 할 수 있다.

    dic = {
    'name' : 'fsoftwareengineer',
    'age' : 17,
    'pet' : {
    'name' : 'Ronny',
    'age' : 3
    }
    }
    print(dic) {'name': 'fsoftwareengineer', 'age': 17, 'pet': {'name': 'Ronny', 'age': 3}}

    펫은 어떻게 가져오면 되는가?

    dic = {
    'name' : 'fsoftwareengineer',
    'age' : 17,
    'pet' : {
    'name' : 'Ronny',
    'age' : 3
    }
    }
    print(dic['pet'])

    그렇자면 펫 내부의 이름 'Ronny'는 어떻게 가져오는가? 중첩 리스트에서 list[0][2]를 이용해 0번째 저장되어있는 리스트를 불러와 그 리스트의 2번째 아이템을 접근 했던 게 기억나는가? 마찬가지이다. dic['pet']을 한 상태에서 이미 여러분은 { 'name':'Ronny', 'age':3 }을 가지고 있는 것이다. 이제 위에서 했던 것 처럼 같은 방법으로 'name'을 가져오면 된다.

    dic = {
    'name' : 'fsoftwareengineer',
    'age' : 17,
    'pet' : {
    'name' : 'Ronny',
    'age' : 3
    }
    }
    print(dic['pet']['name']) Ronny

    삽입 (Insert)

    그렇다면 초기화 이후에는 어떻게 key-value를 삽입해야 하는가? 그건 초기화보다 더 간단하다.

    dic = {
    'name' : 'fsoftwareengineer',
    'age' : 17
    }
    print(dic)
    # dic에 새로운 key - value 넣기
    dic['phone'] = "02-834-2549"
    print(dic)
    print(dic['phone']) {'name': 'fsoftwareengineer', 'age': 17} {'name': 'fsoftwareengineer', 'age': 17, 'phone': '02-834-2549'} 02-834-2549

    이렇게 원하는 key를 이용해 dic[key] =  value 값을 할당하면, 파이썬이 '어라? 이녀석은 원래 딕셔너리에 없는 녀석이니 새로 만들어줘야겠다.' 하고 새로 만들어준다. 따라서 새 값을 삽입하기 전인 맨 처음 print는 phone과 그 값을 출력하지 않지만 두번째는 출력하는것이다.

    수정 (Update)

    수정을 하는 법에는 여러가지가 있지만 가장 간단한 방법은 위의 삽입과 동일한 방법을 사용하는 것이다.

    dic = {
    'name' : 'fsoftwareengineer',
    'age' : 17
    }
    print(dic['name'])
    dic['name'] = "other name"
    print(dic['name'])
    print(dic) fsoftwareengineer other name {'name': 'other name', 'age': 17}

    기존의 fsoftwareengineer에서 other name으로 name키의 value가 바뀐 것을 확인 할 수 있다.

    삭제 (Delete)

    리스트에서 삭제를 어떻게 했었는지 기억나는가? 바로 del을 이용해 삭제했었다. 딕셔너리에서도 마찬가지로 del을 이용해 삭제 할 수 있다.

    dic = {
    'name' : 'fsoftwareengineer',
    'age' : 17
    }
    print(dic)
    del dic['name']
    print(dic) {'name': 'fsoftwareengineer', 'age': 17} {'age': 17}

    두번째 print에서 'name:'fsoftwareengineer'가 삭제 된 것을 확인 할 수 있다.

    이번 포스트에서는 딕셔너리가 무엇이고 딕셔너리를 초기화하는 방법, 삽입, 수정, 삭제하는 방법에 대해 알아보았다. 다음 포스트에서는 딕셔너리가 제공하는 다양한 함수를 이용해 딕셔너리를 이용하는 방법을 설명하도록 하겠다.

    연습문제

    • 딕셔너리 내부에 값으로 리스트를 넣을 수 있는가? key가 'fruits'이고 값이 ['apple', 'banana', 'orange']인 딕셔너리를 작성 해 보아라.
    • 딕셔너리의 key는 반드시 문자열이어야 하는가? key가 10이고 value이 '십'인 딕셔너리를 작성 해 보아라. 
    • 위의 딕셔너리에 key가 'ten' 이고 value가 10인 딕셔너리를 작성하고 출력 해 보아라.


    댓글

f.software engineer @ All Right Reserved