-
Dict(딕셔너리)Python Programming 2021. 4. 7. 14:05
Dict 란?
- {key: value} 형태로 값을 저장하는 자료형을 딕셔너리라고 한다.
- 딕셔너리는 중괄호로 표시를 하게된다.
test_dict = {
123: 456,
"key": 10
}
print('dict 1:', test_dict)
# result: dict 1: {123: 456, 'key': 10}
- list와 같이 dict()로 자료형을 만들 수 있다.
하지만 dict() 형태로 만들경우에 key 값은 무조건 String 형태로 존재해야한다는 점을 알아두어야한다.
test_dict = dict(key1=0, key2=1)
print('dict 2:',test_dict)
# result: dict 2: {'key1': 0, 'key2': 1}
1. Dict가 메모리에 저장되는 방식
- 딕셔너리는 Python에서만 활용되는 자료형이므로 Hashtable이라고도 불린다.
- RAM에 저장되는 방식은 key에 대한 hash값을 만들고 그 hash에 대한 value만을 check해서 메모리에 저장한다.
- 여기서 key의 hash값은 유니크한 값이여야한다. 따라서 key 또한 유니크 성이 보장되는 값으로 존재해야한다.
2. list vs dict
- list
- 원하는 데이터를 찾는다고 가정할 때, 리스트의 경우 찾으려는 값을 위에서부터든 아래서부터든 일일이 하나씩 찾아볼 것이다. (데이터가 수십만개 저장되어 있다는 가정)
이때, find operation 속도가 하나의 데이터당 1초가 걸린다고 가정한다면 보통 리스트의 경우 데이터를 찾기 위한 시간은 n초가 걸린다.
- dict
- 딕셔너리의 key, value 쌍에 대해서 일일이 하나씩 비교하면서 찾는 방식이 아닌, key에 대한 hash 값을 이용해서 원하는 value의 값만 checking 한다.
이때, dict는 key의 hash값만 알수 있다면 원하는 데이터를 1초면 찾을 수 있다.
이처럼 프로그래밍의 가속성에 대해서 얼마나 활용적이고 시간을 단축시킬 수 있는가에 대한 고민을 할 수 있다.결론은 list & dict는 상황에 맞게 사용하는 것이 좋으며, find operation 속도를 고려한다면 dict 자료형을 사용하는게 좋을 것이다.
3. dict 사용 시 유의해야할 것
- key, value pair
- find operation 속도
4. dict Indexing
stock_dick = {
"삼성전자": 10,
"LG전자": 16,
}
print(stock_dick["LG전자"])
# result: 16
- 수정
stock_dick["LG전자"]= 50
print(stock_dick)
# result: {'삼성전자': 10, 'LG전자': 50}- 추가
stock_dick["SK"]=100
print(stock_dick)
# result: {'삼성전자': 10, 'LG전자': 50, 'SK': 100}