파이썬의 dictionary 자료형과 관련하여 자주 사용하는 함수를 정리해보려 한다.
목차
파이썬 dictionary 다루기
파이썬에서 json 데이터를 불러온 이후, dictionary를 다루는 방법을 알아야 데이터를 제대로 다룰 수 있을 것이다.
이를 위해 딕셔너리 자료형의 간단한 개념과 다루는 방법(중 일부)을 정리해본다.
먼저, dictionary의 key는 immutable(변경 불가능) 객체, value는 mutable(변경 가능) 객체이다. (사실 key값은 pop을 통해 변경할 수 있으나, 이는 새로운 객체로 대체하는 개념이므로 mutable 객체라는 것은 아니다. 중요한 건 아니므로 잘 모르겠으면 넘어가자.)
따라서 key에는 int, tuple, float, bool 객체는 사용 가능하나 mutable 객체인 set, list, dictionary는 사용할 수 없다.
dictionary 복사
파이썬에는 얇은 복사와 깊은 복사가 있다. 그 개념은 다음을 참조하자.
딕셔너리의 얇은 복사는 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가 리턴된다.
최근댓글