이 페이지의 모든 내용은 저자 박상길 님의 파이썬 알고리즘 인터뷰를 기반으로 정리한 내용임을 밝힙니다.
C의 배열 != python의 list ( 사실상, 파이썬은 모든게 객체! )
그렇기 때문에 reference 형식을 취하며 이로 인해 부득이하게 속도가 느리다.
내부적으로 해시테이블로 구현. 즉, 해싱을 통해 해시 테이블에 자료를 저장한다.
이 말은 무엇이냐? 입력과 조회 모두 O(n)
에 가능하다. key를 이용해 value를 찾는다!
1.선언 방법
>>>a=dict() or a={}
2.선언과 할당
>>>a={'key1':'value1', 'key2':'value2'}
>>>a
{'key1':'value1', 'key2':'value2'}
>>>a['key3']=['value3']
{'key1':'value1', 'key2':'value2','key3':'value3'}
이 때 value는 여러개 불가
...
>>> a=collections.defaultdict(int)
>>>a['A'] = 5
>>>a['B'] = 4
>>>a
defaultdict(<class 'int>',{'A':5, 'B':4}
여기서는 A와 B만을 할당했다.
>>>a['C'] +=1
>>>a
defaultdict(<class 'int'>, {'A': 5, 'B': 4, 'C': 1})
>>>a=[1,2,1,4,5,5,6,6]
>>>b=collections.Counter(a)
>>>b
Counter({1:2,5:2,6:2,2:1,4:1})
즉, Counter 객체의 key는 item이 value에는 item의 개수가 저장된다. ( 이 때, Counter(=dictionary)에 저장될때 key의 크기는 자동적으로 계산되어 sort 되는듯 )
여기서 다시 또 가장 많이 등장한 item을 선택할려면 most_common을 사용하자.
b.most_common(2)
[(1,2),(5,2)]
가장 많이 등장한 중에서 두번째로 작은 수와 출현 빈도를 구하라고 하면 우리는
b.most_common(2)[1][0], b.most_common(2)[0][1]
과 같이 표현할 수 있다.