7์ฃผ์ฐจ ๊ฐ์ ์ฃผ์ ๋ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค.
01. ์๋ฃ๊ตฌ์กฐ์ ์ดํด
1. ์๋ฃ๊ตฌ์กฐ์ ๊ฐ๋
- ์๋ฃ๊ตฌ์กฐ data structure : ํน์ง์ด ์๋ ์ ๋ณด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ํจ์จ์ ์ผ๋ก ์ ์ฅ ๋ฐ ๋ฐํํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ์
- ๋์ฉ๋์ผ์๋ก ๋ฉ๋ชจ๋ฆฌ์ ๋นจ๋ฆฌ ์ ์ฅํ๊ณ ๊ฒ์ํจ์ผ๋ก์จ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํด์ผ ์คํ ์๊ฐ์ ์ค์ผ ์ ์์
2. ํ์ด์ฌ์์์ ์๋ฃ๊ตฌ์กฐ
ํ์ด์ฌ์์ ์ ๊ณตํ๋ ์๋ฃ๊ตฌ์กฐ์ ์ข ๋ฅ๋ค์ ๋ํด ์ ๋ฆฌํ ํ๋ ๊ฐ์์์์ ํ์ธํด์ฃผ์ธ์.
์ด๊ฑฐํ ๋ค์ํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ํ๋์ฉ ๋ฐฐ์ฐ๋ฉฐ ์ค์ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์.
02. ์คํ๊ณผ ํ
1. ์คํ
- Last In First Out(LIFO), ๋ง์ง๋ง์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ฅ ๋จผ์ ๋์ค๋ ํํ๋ก ๋ฐ์ดํฐ์ ์ ์ฅ ๊ณต๊ฐ์ ๊ตฌํํ๋ ๊ฒ
- ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ณต๊ฐ์ผ๋ก ๋ฆฌ์คํธ์ ๋น์ทํ์ง๋ง ์ ์ฅ ์์๊ฐ ๋ฐ๋๋ ํํ๋ฅผ ์คํ ์๋ฃ๊ตฌ์กฐ ๋ผ๊ณ ํจ
- ํธ์(push) : ์คํ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฒ / ํ(pop) : ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋ ๊ฒ
ํ์ด์ฌ์์๋ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ์คํ์ ๊ตฌํํ ์ ์๋ค. ๋ฆฌ์คํธ๋ผ๋ ์ ์ฅ ๊ณต๊ฐ์ ๋ง๋ ํ append( ) ํจ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ pop( ) ํจ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋ค.
a = [1, 2, 3, 4, 5]
a.append(10)
print(a)
a.append(20)
print(a)
print(a.pop()) # ์ถ์ถ๊ณผ ๋์์ ๋ฆฌ์คํธ์์ ์ญ์
print(a.pop())
# ์ถ๋ ฅ๊ฒฐ๊ณผ
[1, 2, 3, 4, 5, 10]
[1, 2, 3, 4, 5, 10, 20]
20
10
์คํ์ผ๋ก ๋ง๋ค ์ ์๋ ํ๋ก๊ทธ๋จ์ ์์๋ ๋ค์๊ณผ ๊ฐ๋ค.
- '์ด์ง์ ๋ณํ๊ธฐ' ํ๋ก๊ทธ๋จ : 2๋ก ๋๋ ๋๋จธ์ง ๊ฐ์ ์คํ์ ํธ์ฌํ ํ ๋ง์ง๋ง์ผ๋ก ๋ค์ด์จ ๊ฐ๋ถํฐ ํ์ผ๋ก ์ถ์ถํ๊ณ ์ถ๋ ฅํ๋ฉด ๋๋ค.
- ํ ์คํธ ์ญ์ ์ถ์ถ ํ๋ก๊ทธ๋จ
word = input("Input a word: ")
world_list = list(word) # ๋ฆฌ์คํธํ์ผ๋ก ๋ณํ
print(world_list)
result=[]
for _ in range(len(world_list)):
result.append(world_list.pop())
print(result)
print(word[::-1])
- _ ๊ธฐํธ : for๋ฌธ์ _ ๊ธฐํธ๊ฐ ์์ผ๋ฉด ํด๋น ๋ฐ๋ณต๋ฌธ์์ ์์ฑ๋๋ ๊ฐ์ ์ฝ๋์์ ์ฌ์ฉํ์ง ์๋๋ค๋ ๋ป์ด๋ค.
- for _ in range(len(world_list)): ์ฝ๋์์๋ range(len(world_list))์์ ์์ฑ๋๋ ๊ฐ์ ๋ฐ๋ณต๋ฌธ ๋ด์์ ์ฌ์ฉํ์ง ์์ผ๋ฏ๋ก _๋ก ํ ๋น๋ฐ์ ๊ฒ์ด๋ค.
2. ํ
- First In First Out(FIFO), ๋จผ์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋์ค๋ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ ์๋ฃ๊ตฌ์กฐ
ํ์ด์ฌ์์ ํ๋ฅผ ๊ตฌํํ๋ ๊ฒ์ ๊ฐ๋จํ๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์คํ์ ๊ตฌํ๊ณผ ๊ฐ๋ค.
pop( ) ํจ์๋ฅผ ์ฌ์ฉํ ๋ ์ธ๋ฑ์ค๊ฐ 0๋ฒ์งธ์ธ ๊ฐ์ ์ด๋ค๋ ์๋ฏธ๋ก pop(0)์ ์ฌ์ฉํ๋ฉด ๋๋ค.
a = [1, 2, 3, 4, 5]
a.append(10)
a.append(20)
print(a.pop(0)) # 1
print(a.pop(0)) # 2
03. ํํ๊ณผ ์ธํธ
1. ํํ
- ๋ฆฌ์คํธ์ ๊ฐ์ ๊ฐ๋ ์ด์ง๋ง ๊ฐ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ ๋ฆฌ์คํธ๋ก ์ดํดํ๋ฉด ๋๋ค
t = (1, 2, 3)
print(t+t, t*2)
(1, 2, 3, 1, 2, 3) (1, 2, 3, 1, 2, 3)
print(len(t))
3
2. ์ธํธ
- ๊ฐ์ ์์์์ด ์ ์ฅํ๋ ์ค๋ณต์ ๋ถํํ๋ ์๋ฃํ
- ๋ฌธ์ ํ๋์ ๋ค์ด๊ฐ ์๋ ๋จ์ด ์ข ๋ฅ์ ๊ฐ์๋ฅผ ์ ๋ ๋ชจ๋ ๋จ์ด๋ฅผ ์ถ์ถํ ํ ์ธํธ๋ก ๋ณํํ๋ฉด ๋จ์ด ์ข ๋ฅ์ ๊ฐ์๋ฅผ ์ฝ๊ฒ ํ์ ํ ์ ์์
s = set([1, 2, 3, 1, 2, 3])
print(s)
{1, 2, 3}
- ์ธํธ๋ ํํ๊ณผ ๋ค๋ฅด๊ฒ ์ญ์ ๋ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํจ
print(s) # {1, 2, 3}
s.add(1)
print(s) # {1, 2, 3}
s.remove(1)
print(s) # {2, 3}
s.update([1, 4, 5, 6, 7])
print(s) # {1, 2, 3, 4, 5, 6, 7}
s.discard(3)
print(s) # {1, 2, 4, 5, 6, 7}
s.clear()
print(s) # set()
- ํ์ด์ฌ์ ์ธํธ๋ ๋ค์ํ ์งํฉ ์ฐ์ฐ์ ์ ๊ณตํจ
s1 = set([1, 2, 3, 4, 5])
s2 = set([3, 4, 5, 6, 7])
print(s1.union(s2)) # {1, 2, 3, 4, 5, 6, 7}
print(s1 | s2) # {1, 2, 3, 4, 5, 6, 7}
print(s1.intersection(s2)) # {3, 4, 5}
print(s1 & s2) # {3, 4, 5}
print(s1.difference(s2)) # {1, 2}
print(s1 - s2) # {1, 2}
04. ๋์ ๋๋ฆฌ
1. ๋์ ๋๋ฆฌ์ ๊ฐ๋
๋ฐ์ดํฐ์ ์ ์ผํ ๊ตฌ๋ถ์์ธ key ๋ผ๋ ์ด๋ฆ์ผ๋ก ๊ฒ์ํ ์ ์๊ฒ ํ๊ณ , ์ค์ ๋ฐ์ดํฐ๋ฅผ value ๋ผ๋ ์ด๋ฆ๊ณผ ์์ผ๋ก ์ ์ฅํ์ฌ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ์ฐพ์ ์ ์๋๋ก ํจ
2. ํ์ด์ฌ์์์ ๋์ ๋๋ฆฌ
- ์ค๊ดํธ { }๋ฅผ ์ฌ์ฉํ์ฌ ํค์ ๊ฐ์ ์์ผ๋ก ๊ตฌ์ฑํ๋ฉด ๋จ
๐ก ๋์ ๋๋ฆฌ ๋ณ์ = {ํค 1:๊ฐ 1, ํค 2:๊ฐ 2, ํค 3:๊ฐ 3, …}
- ๊ฐ์๋ ๋ค์ํ ์๋ฃํ์ด ๋ค์ด๊ฐ ์ ์๋ค.
student_info = {20140012:'Sungshul',20140059:'Jiyong',20140058:'Jaehong'}
print(student_info[20140012]) # 'Sungchul' ์ถ๋ ฅ
ํด๋น ๊ฐ์ ํค๋ฅผ ๋๊ดํธ [ ] ์์ ๋ฃ์ด ํธ์ถํ๋ฉด ๋๋ค. ํค๋ ๋ฌธ์์ด๋ก๋, ์ ์ํ์ผ๋ก๋ ์ ์ธ ๊ฐ๋ฅํ๋ค.
- ์ฌํ ๋น๊ณผ ๋ฐ์ดํฐ ์ถ๊ฐ
student_info[20140012] = 'Sungchul'
print(student_info[20140012]) # 'Sungchul' ์ถ๋ ฅ
student_info[20140039] = 'Wonchul'
print(student_info)
# ์ถ๋ ฅ๊ฒฐ๊ณผ
{20140012: 'Sungchul', 20140059: 'Jiyong', 20140058: 'Jaehong', 20140039: 'Wonchul'}
3. ๋์ ๋๋ฆฌ ํจ์
country_code = {}
country_code = {"America": 1, "Korea": 82, "China": 86, "Japan": 81}
print(country_code)
# ์ถ๋ ฅ๊ฒฐ๊ณผ
{'America': 1, 'Korea': 82, 'China': 86, 'Japan': 81}
print(country_code.keys()) # ๋์
๋๋ฆฌ์ ํค๋ง ์ถ๋ ฅ
## dict_keys(['America', 'Korea', 'China', 'Japan'])
country_code["German"] = 49 # ๋์
๋๋ฆฌ ์ถ๊ฐ
print(country_code)
## {'America': 1, 'Korea': 82, 'China': 86, 'Japan': 81, 'German': 49}
print(country_code.values()) # ๋์
๋๋ฆฌ์ ๊ฐ๋ง ์ถ๋ ฅ
## dict_values([1, 82, 86, 81, 49])
print(country_code.items()) # ๋์
๋๋ฆฌ ๋ฐ์ดํฐ ์ถ๋ ฅ
## dict_items([('America', 1), ('Korea', 82), ('China', 86), ('Japan', 81), ('German', 49)])
- keys( ) : ํค๋ง ์ถ๋ ฅ, ๋ฆฌ์คํธ ํํ๋ก ์ถ๋ ฅ๋จ
- values( ) : ๊ฐ๋ง ์ถ๋ ฅ
- items( ) : ํค-๊ฐ ์์ ๋ชจ๋ ์ถ๋ ฅ
for k, v in country_code.items():
print("Key:", k)
print("Value:", v)
Key: America
Value: 1
Key: Korea
Value: 82
Key: China
Value: 86
Key: Japan
Value: 81
Key: German
Value: 49
- for๋ฌธ์ผ๋ก ํค-๊ฐ ์ ์ถ๋ ฅ
print("Korea" in country_code.keys()) # ํค์ "Korea"๊ฐ ์๋์ง ํ์ธ
print(82 in country_code.values()) # ๊ฐ์ 82๊ฐ ์๋์ง ํ์ธ
True
True
- if๋ฌธ์ผ๋ก ํน์ ํค๋ ๊ฐ์ด ํด๋น ๋ณ์์ ํฌํจ๋์ด ์๋์ง ํ์ธ
05. collections ๋ชจ๋
ํ์ด์ฌ์ ๋ด์ฅ ์๋ฃ๊ตฌ์กฐ ๋ชจ๋์ธ collections์ ๋ํด ์์๋ณด์.
collections ๋ชจ๋ : ๋ฆฌ์คํธ, ํํ, ๋์ ๋๋ฆฌ ๋ฑ์ ์๋ฃ๊ตฌ์กฐ๋ฅผ ํ์ฅํ์ฌ ์ ์๋ ํ์ด์ฌ์ ๋ด์ฅ ๋ชจ๋ deque, OrderedDict, defaultdict, Counter, namedtuple ๋ฑ์ ์ ๊ณตํ๋ค. ๊ฐ ์๋ฃ๊ตฌ์กฐ๋ฅผ ํธ์ถํ๋ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
from collections import deque
from collections import OrderedDict
from collections import defaultdict
from collections import Counter
from collections import namedtuple
1. deque ๋ชจ๋
์คํ๊ณผ ํ๋ฅผ ๋ชจ๋ ์ง์ํ๋ ๋ชจ๋
๋ฆฌ์คํธ์ ๋น์ทํ ํ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด์ผ ํจ
from collections import deque
deque_list = deque()
for i in range(5):
deque_list.append(i)
print(deque_list)
# deque([0, 1, 2, 3, 4]) ์ถ๋ ฅ
- append( ) ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๊ธฐ์กด ๋ฆฌ์คํธ์ฒ๋ผ ๋ฐ์ดํฐ๊ฐ ์ธ๋ฑ์ค ๋ฒํธ๋ฅผ ๋๋ฆฌ๋ฉด์ ์์
print(deque_list.pop())
print(deque_list.pop())
print(deque_list.pop())
print(deque_list)
# ์ถ๋ ฅ๊ฒฐ๊ณผ
4
3
2
deque([0, 1])
- deque_list.pop( ) : ์ค๋ฅธ์ชฝ ์์๋ถํฐ ํ๋์ฉ ์ถ์ถ, ๋์ค์ ๋ฃ์ ๊ฐ๋ถํฐ ์ถ์ถ
from collections import deque
deque_list = deque()
for i in range(5):
deque_list.appendleft(i)
print(deque_list)
# deque([4, 3, 2, 1, 0]) ์ถ๋ ฅ
- appendleft( ) : ์๋ก์ด ๊ฐ์ ์ผ์ชฝ๋ถํฐ ์ ๋ ฅํ๋๋ก ํ์ฌ ๋จผ์ ๋ค์ด๊ฐ ๊ฐ๋ถํฐ ์ถ๋ ฅ๋ ์ ์๋๋ก ํจ
- deque ๋ชจ๋์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(linked list)์ ํน์ฑ์ ์ง์ํ๋ค. ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ์์์ ๊ฐ์ ํ ์ชฝ์ผ๋ก ์ฐ๊ฒฐํ ํ, ์์์ ๋ค์ ๊ฐ์ ์ฃผ์๊ฐ์ ์ ์ฅํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฒฐํ๋ ๊ธฐ๋ฒ์ด๋ค.
- ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ ๋ฐ์ดํฐ๋ฅผ ์ํ์ผ๋ก ์ ์ฅํ ์ ์๋ค. ๋ง์ง๋ง ์์์ ์ฒซ ๋ฒ์งธ ๊ฐ์ ์ฃผ์๋ฅผ ์ ์ฅ์์ผ ํด๋น ๊ฐ์ ์ฐพ์๊ฐ ์ ์๋๋ก ์ฐ๊ฒฐ์ํจ๋ค. ์ด๋ฌํ ํน์ง ๋๋ฌธ์ ๊ฐ๋ฅํ ๊ธฐ๋ฅ ์ค ํ๋๊ฐ rotate( ) ํจ์์ด๋ค.
- ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ์์ชฝ ๋์ ์์๋ค์ ์ฐ๊ฒฐํ ์ ์์ผ๋ฏ๋ก ์ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค. ์ด๋ฅผ ํตํด ๊ฐ ์์์ ์ธ๋ฑ์ค ๋ฒํธ๋ฅผ ํ๋์ฉ ์ฎ๊ธด๋ค๋ฉด ์ค์ ๋ก ์์๋ฅผ ์ฎ๊ธฐ์ง ์๋๋ผ๋ ์ธ๋ฑ์ค ๋ฒํธ๋ฅผ ๋ฐ๊ฟ ์ ์๋ค.
from collections import deque
deque_list = deque()
for i in range(5):
deque_list.append(i)
print(deque_list) # deque([0, 1, 2, 3, 4]) ์ถ๋ ฅ
deque_list.rotate(2)
print(deque_list) # deque([3, 4, 0, 1, 2]) ์ถ๋ ฅ
deque_list.rotate(2)
print(deque_list) # deque([1, 2, 3, 4, 0]) ์ถ๋ ฅ
- rotate( ) : ๊ธฐ์กด deque์ ์ ์ฅ๋ ์์๋ค ๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ๋ฐ๊พธ๋ ๊ธฐ๋ฒ
- rotate(2) ํจ์๋ฅผ ์ํ์ํค๋ฉด 3๊ณผ 4์ ๊ฐ์ด ๋ ์นธ์ฉ ์ด๋ํ์ฌ 0๋ฒ์งธ, 1๋ฒ์งธ ์ธ๋ฑ์ค๋ก ์ฎ๊ฒจ์ง๋ค. ๋ค์ rotate(2)๋ฅผ ์ํ์ํค๋ฉด 1๊ณผ 2๊ฐ 0๋ฒ์งธ, 1๋ฒ์งธ ์ธ๋ฑ์ค๋ก ์ด๋ํ๋ค.
print(deque(reversed(deque_list)))
# deque([0, 4, 3, 2, 1]) ์ถ๋ ฅ
- reversed( ) : ๊ธฐ์กด๊ณผ ๋ฐ๋๋ก ๋ฐ์ดํฐ ์ ์ฅ
deque_list.extend([5, 6, 7])
print(deque_list)
deque_list.extendleft([5, 6, 7])
print(deque_list)
# ์ถ๋ ฅ๊ฒฐ๊ณผ
deque([1, 2, 3, 4, 0, 5, 6, 7])
deque([7, 6, 5, 1, 2, 3, 4, 0, 5, 6, 7])
- extend( ), extendedleft( ) : ๋ฆฌ์คํธ๊ฐ ํต์งธ๋ก ์ค๋ฅธ์ชฝ์ด๋ ์ผ์ชฝ์ผ๋ก ์ถ๊ฐ๋จ
2. OrderedDict ๋ชจ๋
- OrderedDict ๋ชจ๋ : ์์๋ฅผ ๊ฐ์ง ๋์ ๋๋ฆฌ ๊ฐ์ฒด ๋์ ๋๋ฆฌ ํ์ผ์ ์ ์ฅํ๋ฉด ํค๋ ์ ์ฅ ์์์ ์๊ด์์ด ์ ์ฅ๋จ
d = {}
d['x'] = 100
d['l'] = 500
d['y'] = 200
d['z'] = 300
for k, v in d.items():
print(k, v)
# ์ถ๋ ฅ๊ฒฐ๊ณผ
x 100
l 500
y 200
z 300
- OrederedDict ๋ชจ๋์ ํค์ ์์๋ฅผ ๋ณด์ฅํ๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ฅํ ์์๋๋ก ๊ฒฐ๊ณผ๋ฅผ ํ๋ฉด์ ์ถ๋ ฅํ๋ค.
from collections import OrderedDict
d = OrderedDict()
d['x'] = 100
d['y'] = 200
d['z'] = 300
d['l'] = 500
for k, v in d.items():
print(k, v)
# ์ถ๋ ฅ๊ฒฐ๊ณผ
x 100
y 200
z 300
l 500
- ์์๋๋ก ํค-๊ฐ ์์ด ์ถ๋ ฅ๋๋ค.
- ๋์ ๋๋ฆฌ๋ก ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ ํค๋ ๊ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ ๋ OrderedDict ๋ชจ๋์ ๋ง์ด ์ฌ์ฉํ๋ค.
- ํค๋ฅผ ์ด์ฉํ์ฌ ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ๋ฅผ ๋ฒํธ ์์๋๋ก ์ ๋ ฌ ํ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ ์ฝ๋๋ฅผ ์์ฑํ์
def sort_by_key(t):
return t[0]
from collections import OrderedDict
d = dict()
d['x'] = 100
d['y'] = 200
d['z'] = 300
d['l'] = 500
for k, v in OrderedDict(sorted(d.items(), key=sort_by_key)).items():
print(k, v)
# ์ถ๋ ฅ๊ฒฐ๊ณผ
l 500
x 100
y 200
z 300
3. defaultdict ๋ชจ๋
- ๋์ ๋๋ฆฌ ๋ณ์๋ฅผ ์์ฑํ ๋ ํค์ ๊ธฐ๋ณธ๊ฐ์ ์ง์ ํ๋ ๋ฐฉ๋ฒ ์๋ก์ด ํค๋ฅผ ์์ฑํ ๋ ๋ณ๋ค๋ฅธ ์กฐ์น ์์ด ์๋ก์ด ๊ฐ์ ์์ฑํ ์ ์์
from collections import defualtdict
d = defaultdict(lambda: 0)
print(d["first"]) # 0 ์ถ๋ ฅ
4. Counter ๋ชจ๋
- ์ํ์ค ์๋ฃํ์ ๋ฐ์ดํฐ ๊ฐ์ ๊ฐ์๋ฅผ ๋์ ๋๋ฆฌ ํํ๋ก ๋ฐํํ๋ ๋ฐฉ๋ฒ ๋ฆฌ์คํธ๋ ๋ฌธ์์ด๊ณผ ๊ฐ์ ์ํ์ค ์๋ฃํ์ ์ ์ฅ๋ ์์ ์ค์์ ๊ฐ์ ๊ฐ์ด ๋ช ๊ฐ ์๋์ง ๊ทธ ๊ฐ์๋ฅผ ๋ฐํํจ
- ๋จ์ํ ์ํ์ค ์๋ฃํ์ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ ์ญํ ๋ ํ์ง๋ง, ๋์ ๋๋ฆฌ ํํ๋ ํค์๋ ํํ์ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ Counter๋ฅผ ์์ฑํ ์ ์์
5. namedtuple ๋ชจ๋
- namedtuple ๋ชจ๋์ ํํ์ ํํ๋ก ๋ฐ์ดํฐ ๊ตฌ์กฐ์ฒด๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ
from collections import namedtuple
Point = namedtuple('Point',['x', 'y'])
p = Point(11, y=22)
print(p) # Point(x=11, y=22) ์ถ๋ ฅ
์ค์ต : ํ ์คํธ ๋ง์ด๋ ํ๋ก๊ทธ๋จ
๋์ ๋๋ฆฌ์ collections ๋ชจ๋์ ์ด์ฉํ์ฌ ํ ์คํธ ๋ง์ด๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ค์ด๋ณด์.
text mining : ํ ์คํธ๋ฅผ ๋ถ์ํ์ฌ ์๋ฏธ ์๋ ๊ฒฐ๊ณผ๋ฅผ ๋์ถํ๋ ๊ณผ์ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ ๋ฌธ์ฅ์์ ๋จ์ด๊ฐ ์ผ๋ง๋ ๋ง์ด ์ถํํ๋์ง ๋ถ์ํจ → defaultdict ๋ชจ๋ ์ฌ์ฉํ๋ฉด ๋ฌธ์ฅ์ ์๋ ๋จ์ด์ ๊ฐ์ ํ์ ๊ฐ๋ฅ
์์ฑ ๊ท์น์ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋ฌธ์ฅ์ ๋จ์ด ๊ฐ์๋ฅผ ํ์ ํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
- defaultdict ๋ชจ๋์ ์ฌ์ฉํ๋ค.
- ๋จ์ด์ ์ถํํ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด OrderedDict ๋ชจ๋์ ์ฌ์ฉํ๋ค.
๋ฌธ์ ํด๊ฒฐ์ ๊ฐ์์์ ํ์ธํด์ฃผ์ธ์.