collections ๋ชจ๋์ ํ์ด์ฌ ๋ฒ์ฉ ๋ด์ฅ ์ปจํ ์ด๋ dict, list, set ๋ฐ tuple์ ๋ํ ๋์์ ์ ๊ณตํ๋ ํน์ ์ปจํ ์ด๋ ๋ฐ์ดํฐํ์ ์ ๊ณตํ๋ ๋ชจ๋์ด๋ค. ๋ํ์ ์ผ๋ก Counter, defaultdict, deque ๋ฑ์ด ์๋ค.
(1) value๊ฐ์ 0 ๋๋ ์์ ๊ฐ๋ ํ์ฉ
(2) ์์ฑ ์ O(n)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง
(3) ๋๋ฝ๋ ํญ๋ชฉ์ ๋ํด KeyError๊ฐ ๋ฐ์ํ์ง ์๊ณ , ๋์ 0์ ๋ฐํ
n(๋น ๊ฐ์ฒด, iterableํ ๊ฐ์ฒด, mapping๋ ๊ฐ์ฒด, keyword arguemnt)์ dictionaryํํ์ฌ ๋ฐํํ๋ค.
from collections import Counter
c1 = Counter()
>>> print(c1)
Counter()
c2 = Counter('Hello')
>>> print(c2)
Counter({'l': 2, 'H': 1, 'e': 1, 'o': 1})
c3 = Counter({'a' : 4, 'b' : 3})
>>> print(c3)
Counter({'a': 4, 'b': 3})
c4 = Counter(a = 1, b = 3)
>>> print(c4)
Counter({'b': 3, 'a': 1})
value์ ๊ฐ์ด 1์ด์์ธ key๊ฐ์ ๋ฐํํ๋ค.
from collections import Counter
c = Counter(a = 3, b = 2, c = 0)
>>> print(list(c.elements()))
['a', 'a', 'a', 'b', 'b']
value๊ฐ ํฐ key๋ถํฐ ๋ด๋ฆผ์ฐจ์์ผ๋ก n๊ฐ๋งํผ ๋ฐํํ๋ค. n์ด ์๋ต๋๊ฑฐ๋ None์ด๋ผ๋ฉด, ๋ชจ๋ key๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ฐํํ๋ค. value๊ฐ ๊ฐ์ key๋ ์ฒ์ ์์๋ฅผ ์ ์งํ๋ค.
from collections import Counter
c = Counter(a = 3, b = 2, c = 0)
>>> print(c.most_common())
[('a', 3), ('b', 2), ('c', 0)]
์ ์ฒด value์ ๊ฐ์๋ฅผ ๊ณ์ฐํ์ฌ ๋ฐํํ๋ค.
from collections import Counter
c = Counter(a = 3, b = 2, c = 0)
>>> print(c.total())
5
key๋ฅผ ์ง์ ํ ๋ ๊ฐ์ ์ฃผ์ง ์์ ๊ฒฝ์ฐ, default๊ฐ์ ์ง์ ํ ์ ์์
n(์๋ฃํ, ์๋ฃ๊ตฌ์กฐ)์ ๊ธฐ๋ณธ์ธ์๋ก ํ๋ dictionary์์ฑ
from collections import defaultdict
dic1 = defaultdict(int)
>>> print(dic1[0])
0
dic2 = defaultdict(float)
>>> print(dic2[0])
0.0
dic3 = defaultdict(list)
>>> print(dic3[0])
[]
(1) ์ ๋ element์ ๋ํด append, pop ๊ฐ๋ฅ
(2) stack๊ณผ queue๋ฅผ ๋์์ ์ฌ์ฉ ๊ฐ๋ฅ
(3) list์ ๋นํด ์๋๊ฐ ๋น ๋ฆ
queue์ ๋งจ ๋ค์ item์ ์ถ๊ฐํ๋ค.
from collections import deque
queue = deque()
queue.append(3)
queue.append(4)
>>> print(queue)
deque([3, 4])
queue์ ๋งจ ์์ item์ ์ถ๊ฐํ๋ค.
from collections import deque
queue = deque()
queue.append(3)
queue.appendleft(4)
>>> print(queue)
deque([4, 3])
queue์ ๋งจ ๋ค์ ์์๋ฅผ ๊บผ๋ธ๋ค.
from collections import deque
queue = deque([1,2,3])
queue.pop()
>>> print(queue)
deque([1, 2])
queue์ ๋งจ ์์ ์์๋ฅผ ๊บผ๋ธ๋ค.
from collections import deque
queue = deque([1,2,3])
queue.popleft()
>>> print(queue)
deque([2, 3])
n๋งํผ ์์๋ฅผ ํ์ ์ํจ๋ค. ์๊ณ๋ฐฉํฅ ํ์ ์ ์์, ๋ฐ์๊ณ๋ฐฉํฅ์ ์์๋ฅผ n์ ๋์ ํ๋ค.
from collections import deque
queue = deque([1, 2, 3, 4, 5])
queue.rotate(2)
>>> print(queue)
deque([4, 5, 1, 2, 3])