300x250

파이썬의 dictionary 자료형과 관련하여 자주 사용하는 함수를 정리해보려 한다.

 

 

목차

     

     

     

    파이썬 dictionary 다루기

     

    파이썬에서 json 데이터를 불러온 이후, dictionary를 다루는 방법을 알아야 데이터를 제대로 다룰 수 있을 것이다.

    이를 위해 딕셔너리 자료형의 간단한 개념과 다루는 방법(중 일부)을 정리해본다.

     

    먼저, dictionary의 key는 immutable(변경 불가능) 객체, value는 mutable(변경 가능) 객체이다. (사실 key값은 pop을 통해 변경할 수 있으나, 이는 새로운 객체로 대체하는 개념이므로 mutable 객체라는 것은 아니다. 중요한 건 아니므로 잘 모르겠으면 넘어가자.)

    따라서 key에는 int, tuple, float, bool 객체는 사용 가능하나 mutable 객체인 set, list, dictionary는 사용할 수 없다.

     

     

     

     

    dictionary 복사

     

    파이썬에는 얇은 복사와 깊은 복사가 있다. 그 개념은 다음을 참조하자.

     

    https://jjuke-brain.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%A6%AC%EC%8A%A4%ED%8A%B8%EC%9D%98-%ED%95%A0%EB%8B%B9%EA%B3%BC-%EB%B3%B5%EC%82%AC-copy%EC%99%80-deepcopy?category=881852 

     

    파이썬 리스트의 할당과 복사 (copy와 deepcopy)

    코테 문제를 풀다가, 리스트를 복사할 때 개고생한(?) 경험을 바탕으로 여러 방법들이 어떤 차이가 있는지 알아보고자 한다. 먼저, 참고로 C++에서의 얕은 복사(Shallow Copy)와 깊은 복사(Deep Copy)의

    jjuke-brain.tistory.com

     

    딕셔너리의 얇은 복사는 copy() 함수를 통해 다음과 같은 방법을 사용한다.

    dict_ex2 = dict_ex.copy()

     

    이에 따라 dict_ex2의 내용을 수정하면 dict_ex에도 반영된다.

     

    깊은 복사를 위해서는 copy.deepcopy() 함수를 사용한다.

    import copy
    
    dict_ex3 = copy.deepcopy(dict_ex)

     

    이에 따라 dict_ex3의 내용을 수정해도 dict_ex는 변화하지 않는다.

     

     

     

     

    dictionary에서의 in

     

    Dictionary에 대해 반복문을 사용할 때 in은 key에 대해서만 사용할 수 있다.

     

     

     

     

    clear()

     

    딕셔너리의 모든 요소를 삭제한다.

     

     

     

     

    fromkeys(key, val)

     

    value는 옵션이고, key에 tuple을 넘겨주면 해당 key를 가진 dictionary를 만들어준다.

    key_tuple = ('key1', 'key2', 'key3')
    
    new_dict = dict.fromkeys(key_tuple)
    print(new_dict)
    # result
    # {'key1':None, 'key2':None, 'key3':None}
    
    new_dict = dict.fromkeys(key_tuple, 0)
    print(new_dict)
    # result
    # {'key1':0, 'key2':0, 'key3':0}

     

     

     

     

    get(keyname, val)

     

    value는 옵션이며, key값에 대한 value를 리턴한다. (keyname에 해당하는 key가 없으면 val을 리턴한다.)

     

     

     

     

    keys(), values()

     

    keys()는 딕셔너리의 key들을 dict_keys객체로, values()는 딕셔너리의 value들을 dict_values객체로 리턴한다.

     

     

     

     

    pop(keyname, val)

     

    val은 옵션이며, 해당 keyname를 가진 요소를 제거하면서 value를 리턴한다.

     

    popitem()함수는 가장 최근에 삽입된 요소를 pop한다.

     

     

     

     

    update(iterable)

     

    주어진 값을 딕셔너리 요소로 추가한다.

     

    예시)

    # update old_key's value to new value
    dict.update({'old_key' : 'new_value'})
    # update old_key's value to new_value_1, and add new element with 'new_key : new_value_2'
    dict.update({'old_key' : 'new_value_1', 'new_key' : 'new_value_2'})

     

     

     

     

     

     

    정렬

     

     

     

    Key 기준 정렬

     

    # sorted()
    sorted(dict_ex)
    
    # items()활용
    sorted(dict_ex.items(), key= lambda x:x[0])

     

    dict_ex 딕셔너리의 key값을 기준으로 정렬된 key list가 리턴된다.

     

     

     

    Value 기준 정렬

     

    # sorted()
    sorted(dict_ex, key= lambda x:dict_ex[x])
    
    # items() 활용
    sorted(dict_ex.items(), key= lambda x:x[1])

     

    Value를 기준으로 정렬된 key list가 리턴된다.

     

     

    728x90
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기