ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [파이썬/자료형]딕셔너리(Dictionary)
    기타 2022. 9. 7. 11:43
    반응형

    1. 딕셔너리란

    키(key)와 값(value)로 이루어진 자료형

    키에 해당하는 값을 넣어 만들 수 있다

     

    2. 선언

    2.1 빈 딕셔너리 선언

    dic = {}

    2.2 key와 value를 넣어서 선언

    dic = {
        'a':0, 
        'b':1, 
        'c':2
    }

    2.3 다양한 타입의 value를 넣어서 선언하기

    dic = {
        'int_v' : 1,
        'str_v' : 'hello',
        'lst_v' : [],
        'lst_v2' : [1,2,3],
        'tup_v' : (1,2,3)
    }

    3. Key/value 호출

    key/value 호출 예시를 위해서 2.3항목의 딕셔너리를 사용한다고 가정함

    3.1 전체 key 목록 불러오기

    기본적인 반환타임은 dict_keys 형태이다

    리스트형을 원하면 list()를 통해 형변환을 해야한다

    # 딕셔너리.keys()
    dic_keys_lst = dic.keys()
    
    print(dic_keys_lst)
    #>> dict_keys(['int_v', 'str_v', 'lst_v', 'lst_v2', 'tup_v'])
    print(list(dic_keys_lst))
    #>> ['int_v', 'str_v', 'lst_v', 'lst_v2', 'tup_v']

    3.2 for문으로 key하나씩 받아오기

    for key in dic:
        print(key)

    3.3 전체 value 불러오기

    기본적인 반환타임은 dict_values 형태이다

    리스트형을 원하면 list()를 통해 형변환을 해야한다

    # 딕셔너리.values()
    dic_value_lst = dic.values()
    
    print(dic_value_lst)
    #>> dict_values([1, 'hello', [], [1, 2, 3], (1, 2, 3)])
    print(list(dic_value_lst))
    #>> [1, 'hello', [], [1, 2, 3], (1, 2, 3)]

    3.4 특정 key의 value 불러오기

    전체의 값이 아닌, 특정 key를 지정해서 해당 key의 value만 불러오기

    # 사용법
    # dic['key이름']
    
    # 사용 예시1
    dic['lst_v2']
    #>> [1,2,3]
    
    # 사용 예시2
    key_name = 'lst_v2'
    dic[key_name]
    #>> [1,2,3]

    3.5 특정 key의 value 불러오기(불러온 값은 삭제)

    전체의 값이 아닌, 특정 key를 지정해서 해당 key의 value만 불러오기

    단, 이때 불러온 key는 딕셔너리에서 삭제된다

    # 사용법
    # dic.pop('key이름')
    
    # 사용 예시1
    dic.pop('lst_v2')
    #>> [1,2,3]
    
    # 사용 예시2
    key_name = 'lst_v2'
    dic.pop(key_name)
    #>> [1,2,3]
    # 실제로 해당 값이 원본 딕셔너리에서 삭제되는지 실험
    
    dic = {'a':0, 'b':99}
    print('before dic : ',dic)
    
    # 특정 key 지정 후 제거
    poped_v = dic.pop('b')
    print('poped value : ',poped_v)
    
    print('after dic : ',dic)
    
    #>> before dic :  {'a': 0, 'b': 99}
    #>> poped value :  99
    #>> after dic :  {'a': 0}

    4. Key 삽입,삭제,수정

    4.1 key 삽입

    dic = {'a':0}
    print('before dic : ',dic)
    
    # 새로운 key 생성 및 해당 키에 값 넣기
    dic['new_key'] = 'this is new key'
    
    print('after dic : ',dic)
    
    #>> before dic :  {'a': 0}
    #>> after dic :  {'a': 0, 'new_key': 'this is new key'}

    4.2 key 삭제

    dic = {'a':0, 'b':99}
    print('before dic : ',dic)
    
    # 특정 key 지정 후 제거
    del(dic['b'])
    
    print('after dic : ',dic)
    
    #>> before dic :  {'a': 0, 'b': 99}
    #>> after dic :  {'a': 0}

    4.3 key 수정

    직접 제공하는 기능은 아니지만,

    앞서 배운 key 삽입과 특정 key의 value 추출 후 삭제를 이용해서 구현 가능하다

    dic['new_key'] = dic.pop('old_key')

    5. Value 치환/메소드사용
    5.1 value 치환

    key의 value는 일반 변수와 같이 새로운 값을 넣어서 치환 가능하다

    dic = {'a':0, 'b':9}
    print('before dic : ',dic)
    
    #key 'a'의 value를 100으로 치환
    dic['a'] = 100 
    #key 'b'의 value를 dic['b'] + 1 으로 치환
    dic['b'] += 1 
    
    print('after dic : ',dic)
    
    #>> before dic :  {'a': 0, 'b': 9}
    #>> after dic :  {'a': 100, 'b': 10}

    5.2 value의 메소드 사용

    key의 value에 list 등의 객체가 들어가 있으면 해당 객체의 메소드를 사용 할 수 있다

    dic = {
        'lst_v' : [7,3,9]
    }
    print('origin dic : ',dic)
    
    dic['lst_v'].append(1)
    print('after append : ',dic)
    
    dic['lst_v'].extend([10,11,12])
    print('after extend : ',dic)
    
    dic['lst_v'].sort()
    print('after sort : ',dic)
    
    #>> origin dic :  {'lst_v': [7, 3, 9]}
    #>> after append :  {'lst_v': [7, 3, 9, 1]}
    #>> after extend :  {'lst_v': [7, 3, 9, 1, 10, 11, 12]}
    #>> after sort :  {'lst_v': [1, 3, 7, 9, 10, 11, 12]}

    6. 딕셔너리 정렬하기

    tmp_dic = dict(sorted(tmp_dic.items(), 
                                   key=lambda x: x[1][기준이되는 컬럼], 
                                   reverse=True))
    반응형

    댓글

Designed by Tistory.