1. ์๋ฃ๊ตฌ์กฐ์ ์ดํด
๊ฐ๋
DEF) ํน์ง์ด ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ํจ์จ์ ์ผ๋ก ์ ์ฅ ๋ฐ ๋ฐํํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ์
- ์ฌ๋ก
- ์ ํ๋ฒํธ๋ถ - ํจ์จ์ ์ผ๋ก ์ ํ๋ฒํธ๋ฅผ ์ฐพ๊ธฐ ์ํด ์ด๋ฆ์ ๊ธฐ์ค์ผ๋ก ๊ฐ๋๋ค ์์ผ๋ก ์ ์ฅ๋์ด ์์
- ์ํ ๋ฒํธํ - ์ฌ์ฉ์๊ฐ ๋๊ธฐํ๋ฅผ ๋ฝ์ ๋๋ง๋ค ๋๊ธฐ ์ธ์ 1์ฉ ์ฆ๊ฐ, ์ํ ์๋น์ค ์ด์ฉ ์ข ๋ฃ์ 1์ฉ ๊ฐ์
- ํ๋ฐฐ ์ํ๋ฌผ - ๋์ค์ ๋ฐฐ๋ฌ๋๋ ์ํ๋ฌผ์ผ์๋ก ํธ๋ญ ์์ชฝ์ ๋ฐฐ์น, ๋จผ์ ๋ฐฐ๋ฌ๋๋ ์ํ๋ฌผ์ผ์๋ก ํธ๋ญ ์ ๊ตฌ์กฑ์ ๋ฐฐ์น
- ํ์ด์ฌ์์์ ์๋ฃ๊ตฌ์กฐ (← ๊ฐ๋จํ ๊ฐ์ ์์ค์์๋ง ํ์ต)์๋ฃ๊ตฌ์กฐ๋ช
ํน์ง
์คํ stack ๋์ค์ ๋ค์ด์จ ๊ฐ์ด ๋จผ์ ๋๊ฐ ์ ์๋๋ก ํด์ฃผ๋ ์๋ฃ๊ตฌ์กฐ (last in first out) ํ queue ๋จผ์ ๋ค์ด์จ ๊ฐ์ด ๋จผ์ ๋๊ฐ ์ ์๋๋ก ํด์ฃผ๋ ์๋ฃ๊ตฌ์กฐ (first in first out) ํํ tuple ๋ฆฌ์คํธ์ ๊ฐ์ง๋ง ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ ํ์ฉํ์ง ์๋ ์๋ฃ๊ตฌ์กฐ ์ธํธ set ๋ฐ์ดํฐ์ ์ค๋ณต์ ํ์ฉํ์ง ์๊ณ , ์ํ์ ์งํฉ ์ฐ์ฐ์ ์ง์ํ๋ ์๋ฃ๊ตฌ์กฐ ๋์ ๋๋ฆฌ dictionary ์ ํ๋ฒํธ๋ถ์ ๊ฐ์ด ํค(key)์ ๊ฐ(value)์ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ. ํค๊ฐ์ ๋ค๋ฅธ ๋ฐ์ดํฐ์ ์ค๋ณต์ ํ์ฉํ์ง ์์ ๋ชจ๋ collections ์์ ์ด๊ฑฐ๋ ์ฌ๋ฌ ์๋ฃ๊ตฌ์กฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋๋ก ์ง์ํ๋ ํ์ด์ฌ ๋ด์ฅ ๋ชจ๋
2. ์คํ๊ณผ ํ
์คํ stack
DEF) ๋ง์ง๋ง์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ฅ ๋จผ์ ๋์ค๋ ํํ๋ก ๋ฐ์ดํฐ์ ์ ์ฅ ๊ณต๊ฐ์ ๊ตฌํํ๋ ๊ฒ. Last in First out
- ์๋ฃ๊ตฌ์กฐ์ ํต์ฌ ๊ฐ๋ ์ค ํ๋
- ๋ฆฌ์คํธ์ ๋น์ทํ์ง๋ง ์ ์ฅ ์์๊ฐ ๋ฐ๋๋ ํํ
- ํธ์push : ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฒ | ํpop : ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋ ๊ฒ
- ์ฌ๋ก; ํ๋ฐฐ์ํ๋ฌผ
- ํ์ด์ฌ์์๋ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํด ์คํ ๊ตฌํ ๊ฐ๋ฅ
- ๋ฆฌ์คํธ๋ผ๋ ์ ์ฅ ๊ณต๊ฐ ์์ฑ
- append() ํจ์๋ก ๋ฐ์ดํฐ ์ ์ฅ [ํธ์]
- pop() ํจ์๋ก ๋ฐ์ดํฐ ์ถ์ถ [ํ]
- ์คํ์ ๊ฐ์ฅ ๋ง์ง๋ง์ ์ ์ฅ๋ ๊ฐ์ด ์ถ์ถ๋๊ณ , ๋์์ ๊ทธ ๊ฐ์ ์ ์ธํ ๋ฆฌ์คํธ๋ก ๋ฐ๋
a=[1,2,3,4,5]
a.append(10). #push
a
[1,2,3,4,5,10] #๋ฆฌ์คํธ์ ์๋ก์ด ๊ฐ์ด ์ ์ฅ๋จ
a.append(20). #push
a
[1,2,3,4,5,10,20]
a.pop() #pop
20 #๊ฐ์ฅ ๋ง์ง๋ง ๊ฐ์ด ๋จผ์ ์ถ์ถ๋จ
a.pop()
10
- ์) ์ ๋ ฅํ ํ ์คํธ ์ญ์์ผ๋ก ์ถ๋ ฅํ๊ธฐ
word=input("Input a word: ")
word_list=list(word)
print(word_list)
result=[]
for _ in range(len(world_list)):
result.append(world_list.pop())
print(result)
print(word[::-1])
#์คํ๊ฒฐ๊ณผ
Input a word: PYTHON
['P','Y','T','H','O','N'] #print(word_list)
['N','O','H','T','Y','P']. #print(result)
NOHTYP #print(word[::-1]) ๋ฆฌ์คํธ ์ญ์์ผ๋ก ์ฌ๋ผ์ด์ฑ
- ๋จผ์ ์ฌ์ฉ์๋ก๋ถํฐ ํ ์คํธ๋ฅผ ์ ๋ ฅ๋ฐ๊ณ , ์ด๋ฅผ ๋ฆฌ์คํธํ์ผ๋ก ๋ณํํ๋ค. (list()ํจ์ ์ฌ์ฉ)
- ๊ฐ์ ๋ ์ํ๋ฒณ๋ถํฐ ์์ํด ํ ๊ธ์์ฉ ์ถ์ถํ์ฌ ๋ค์ result ๋ฆฌ์คํธ์ ํ๋์ฉ ์ ์ฅํ๋ค.
โ๐ป _๊ธฐํธ
for๋ฌธ์ _๊ธฐํธ๊ฐ ์์ผ๋ฉด ํด๋น ๋ฐ๋ณต๋ฌธ์์ ์์ฑ๋๋ ๊ฐ์ ์ฝ๋์์ ์ฌ์ฉํ์ง ์๋๋ค๋ ๋ป
⇒ range(len(world_list))์์ ์์ฑ๋๋ ๊ฐ์ ๋ฐ๋ณต๋ฌธ ๋ด์์ ์ฌ์ฉํ์ง ์์.
ํ queue
DEF) ๋จผ์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋์ค๋ First in First out์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ ์๋ฃ๊ตฌ์กฐ
- ์คํ์ ๋ฐ๋ ๊ฐ๋
- ์ฌ๋ก; ์ํ ๋ฒํธํ
- ๋จผ์ ์จ ์ฌ๋์ด ์์ ๋ฒํธํ๋ฅผ ๋ฝ๊ณ , ๋ฒํธ๊ฐ ๋น ๋ฅธ ์ฌ๋์ด ๋จผ์ ์๋น์ค๋ฅผ ๋ฐ๋ ๊ตฌ์กฐ
- ์ฌ๋ก; ์ํ ๋ฒํธํ
- ์คํ๋ณด๋ค ๊ตฌํ์ด ์กฐ๊ธ ๋ ๋ณต์กํ๊ณ , ์ฒ์์ ๊ฐ์ด ์ ์ฅ๋๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ๊ฐ์ด ์ฌ์ฉ๋จ์ ๋ฐ๋ผ ๊ณ์ ๋ฐ๋๋ฏ๋ก ๊ตฌํ์ ์ ๊ฒฝ์ ์จ์ผ ํ๋ ๊ตฌ์กฐ
- ํ์ด์ฌ์์ ํ์ ๊ตฌํ
a=[1,2,3,4,5]
a.append(10)
a.append(20)
a.pop(0)
1
a.pop(0)
2
- pop() ํจ์ ์ฌ์ฉ ์ ์ธ๋ฑ์ค๊ฐ 0๋ฒ์งธ์ธ ๊ฐ์ ์ด๋ค๋ ์๋ฏธ๋ก pop(0)์ ์ฌ์ฉ. ์ฆ, ๋งจ ์ฒ์ ๊ฐ์ ๊ฐ์ ธ์จ๋ค๋ ๋ป.
3. ํํ๊ณผ ์ธํธ
ํํ tuple
DEF) ๋ฆฌ์คํธ์ ๊ฐ์ ๊ฐ๋ ์ด๋ ๊ฐ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ ๋ฆฌ์คํธ
t=(1,2,3). #ํํ ์ ์ธ
print(t+t, t*2)
(1,2,3,1,2,3) (1,2,3,1,2,3)
len(t)
3
- ํํ์ ์ ์ธ
- ๊ดํธ๋ฅผ ์ด์ฉํด t=(1,2,3)๊ณผ ๊ฐ์ ํํ๋ก ์ ์ธ
- ํน์ง
- ๋ฆฌ์คํธ์์ ์ฌ์ฉํ๋ ์ฐ์ฐ, ์ธ๋ฑ์ฑ, ์ฌ๋ผ์ด์ฑ์ด ๋ชจ๋ ๋์ผํ๊ฒ ์ ์ฉ๋จ
- ๋ฆฌ์คํธํ ๋ฐ์ดํฐ์ ์ฌ์ฉํ๋ ๋ชจ๋ ํจ์ ์ฌ์ฉ ๊ฐ๋ฅ
- ํํ์ ๊ฐ์ ๋ง์๋๋ก ๋ณ๊ฒฝํ ์ ์์
โ๐ป ํํ์ ๊ฐ์ด ํ๋๋ฐ์ ์์ ๋?
-> ๋ฐ๋์ ๊ฐ ๋ค์ ์ฝค๋ง(,)๋ฅผ ๋ถ์ฌ t๊ฐ ํํ์์ ์ ์ธํด์ผ ํจ
-> t=(1)๋ก ์ ๋ ฅํ๋ค๋ฉด ํ์ด์ฌ์ t=1๋ก ์ธ์ํจ
- ํ์์ฑ
- ๋ค๋ฅธ ์ฌ๋์ด ๋ด๊ฐ ๋ง๋ ํจ์๋ฅผ ๋ฐ์ ์ฌ์ฉํ ๋ ๋ณ๊ฒฝํ์ง ๋ชปํ๋๋ก ํ๋ ๊ฒฝ์ฐ
- ํ๋ฒ, ์ด๋ฆ, ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ ๋ฑ ๋ณ๊ฒฝ๋๋ฉด ์ ๋๋ ์ ๋ณด
์ธํธ set
DEF) ๊ฐ์ ์์ ์์ด ์ ์ฅํ๋ ์ค๋ณต์ ๋ถํํ๋ ์๋ฃํ
- ์ํ์ ์งํฉ ๊ฐ๋ ๊ณผ ์ ์ฌ
- ์ ์ฉ์ฑ
- ๋ฌธ์ ํ๋์ ๋ค์ด๊ฐ ์๋ ๋จ์ด ์ข ๋ฅ์ ๊ฐ์๋ฅผ ์ ๋
s=set([1,2,3,1,2,3])
print(s)
{1,2,3}
- ์ธํธ ์ ์ธ
- set()ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌ์คํธ๋ ํํ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์
- ์ด๋ ์ธํธ๋ก ๋ณํํ๋ฉด ์ค๋ณต์ ์ ๊ฑฐํ ํ ์๋์ผ๋ก {1,2,3}์ผ๋ก ๋ณํ๋์ด ์ถ๋ ฅ๋จ
- ์ญ์ ๋ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํจ
s
{1,2,3}
s.add(1). #์์ ์ถ๊ฐํ๋ ํจ์
s
{1,2,3}
s.remove(1) #์์ ์ ๊ฑฐํ๋ ํจ์
s
{2,3}
s.update([1,4,5,6,7]) #์๋ก์ด ๋ฆฌ์คํธ๋ฅผ ๊ทธ๋๋ก ์ถ๊ฐํ๋ ํจ์
s
{1,2,3,4,5,6,7}
s.discard(3) #์์ ์ ๊ฑฐํ๋ ํจ์
s
{1,2,4,5,6,7}
s.clear() #๋ชจ๋ ๋ณ์๋ฅผ ์ง์ฐ๋ ํจ์
s
set()
- ๊ฐ์ ๋ชจ๋ ์์ ์์ด ์ ์ฅ๋๋ ๋์์ ์ค๋ณต์ ์ ๊ฑฐํ๊ณ ์ ์ฅ๋จ
์งํฉ์ฐ์ฐ
์ฐ์ฐ ํจ์ ๊ธฐํธ ์์
ํฉ์งํฉ | union | ||
๊ต์งํฉ | intersection | & | s1.intersection(s2), s1 & s2 |
์ฐจ์งํฉ | difference | - | s1.difference(s2), s1 - s2 |
s1=set([1,2,3,4,5])
s2=set([3,4,5,6,7])
s1.union(s2). #ํน์ s1 | s2
{1,2,3,4,5,6,7}
s1.intersection(s2) #ํน์ s1 & s2
{3,4,5}
s1.difference(s2) #ํน์ s1 - s2
{1,2}
4. ๋์ ๋๋ฆฌ dictionary
DEF) ์์ด์ฌ์ ์์ ๋จ์ด๋ฅผ ์ฐพ๋ ๋ฐฉ์๊ณผ ์ ์ฌํ๊ฒ ํค(key)์ ๊ฐ(value)์ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ
- ๋ฐ์ดํฐ์ ์ ์ผํ ๊ตฌ๋ถ์์ธ ํคkey๋ผ๋ ์ด๋ฆ์ผ๋ก ๊ฒ์, ์ค์ ๋ฐ์ดํฐ๋ฅผ ๊ฐvalue์ด๋ผ๋ ์ด๋ฆ๊ณผ ์์ผ๋ก ์ ์ฅ → ์ฝ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์ ์ ์๋๋ก ํจ
- ex. ์ฃผ๋ฏผ๋ฑ๋ก๋ฒํธ, ํ๋ฒ, ์ ํ ๋ฒํธ ๋ฑ
๋์ ๋๋ฆฌ ์ ์ธ
- ์ค๊ดํธ {}๋ฅผ ์ฌ์ฉํ์ฌ ํค์ ๊ฐ์ ์์ผ๋ก ๊ตฌ์ฑ. (๊ดํธ ()๋ ํํ ์ ์ธ, ๋๊ดํธ []๋ ๋ฆฌ์คํธ ์ ์ธ ๋ฐฉ์)
๋์ ๋๋ฆฌ ๋ณ์ = {ํค1 : ๊ฐ1, ํค2 : ๊ฐ2, ํค3 : ๊ฐ3, … }
- ํ๋ฒ(ํค) ์ด๋ฆ(๊ฐ)
20140012 Sungchul 20140059 Jiyong 20150234 Jaehong 20140058 Wonchul student_info = {20140012:'Sungchul', 20140059:'Jiyong', 20150234:'Jaehong', 20140058:'Wonchul'}
- ๊ฐ์๋ ๋ค์ํ ์๋ฃํ์ด ๋ค์ด๊ฐ ์ ์์. ๋ฆฌ์คํธ์ ๊ฐ์ด ํ ๋ฒ์ ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅํ๊ฑฐ๋, ํํ/์ธํธ ๊ฐ์ ๋ฐ์ดํฐ๋ ์ฌ์ฉ ๊ฐ๋ฅ
- ํค๋ ๋ฌธ์์ด ๋๋ ์ ์ํ์ผ๋ก๋ ์ ์ธ ๊ฐ๋ฅํจ (*๋ณ์์ ์๋ฃํ์ ๋ช ํํ ์ธ์งํ๊ณ ์๋ ๊ฒ์ด ์ค์)
- ๋ณ์ ํธ์ถ: ํด๋น ๊ฐ์ ํค๋ฅผ ๋๊ดํธ [] ์์ ๋ฃ์ด ํธ์ถ
- student_info[20140012] ⇒ ‘Sungchul’
- ๋์ ๋๋ฆฌ์ ์ฌํ ๋น: ๋ฆฌ์คํธ์์ ์ฌ์ฉํ๋ ๋ฐฉ์๊ณผ ๊ฐ์. ํค๋ฅผ ์ด์ฉํด ํด๋น ๋ณ์๋ฅผ ํธ์ถํ ํ ์๋ก์ด ๊ฐ์ ํ ๋น.
๋์ ๋๋ฆฌ ํจ์
country_code={}
country_code={"America":1, "Korea":82, "China":86, "Japan":81}
country_code
{'America':1, 'Korea':82, 'China':86, 'Japan':81}
- keys() : ํค๋ง ๋ฆฌ์คํธ ํํ๋ก ์ถ๋ ฅํ๋ ํจ์
country_code.keys()
dict_keys(['America', 'Korea', 'China', 'Japan']) #๋์
๋๋ฆฌ์ ํค๋ง ์ถ๋ ฅํจ
- values() : ๊ฐ๋ง ๋ฆฌ์คํธ ํํ๋ก ์ถ๋ ฅํ๋ ํจ์
country_code.values()
dict_values([1, 82, 86, 81]) #๋์
๋๋ฆฌ์ ๊ฐ๋ง ์ถ๋ ฅํจ
- items() : ํค—๊ฐ ์์ ๋ชจ๋ ๋ณด์ฌ์ฃผ๋ ํจ์
country_code.items()
dict_items([('America', 1), ('Korea', 82), ('China', 86), ('Japan', 81)])
5. collections ๋ชจ๋
DEF) ๋ค์ํ ์๋ฃ๊ตฌ์กฐ์ธ ๋ฆฌ์คํธ, ํํ, ๋์ ๋๋ฆฌ ๋ฑ์ ํ์ฅํ์ฌ ์ ์๋ ํ์ด์ฌ์ ๋ด์ฅ ์๋ฃ๊ตฌ์กฐ ๋ชจ๋
- ํจ์จ์ ์ด๊ณ ํธ๋ฆฌํจ
- deque, OrderedDict, defaultdict, Counter, namedtuple ๋ฑ ์ ๊ณต
#์๋ฃ๊ตฌ์กฐ ํธ์ถ ์ฝ๋
from collections import deque
from collections import OrderedDict
from collections import defualtdict
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]) deque_list.pop() 4 deque_list.pop() 3
- append() ํจ์ ์ฌ์ฉ ์ ๊ธฐ์กด ๋ฆฌ์คํธ์ฒ๋ผ ๋ฐ์ดํฐ๊ฐ ์ธ๋ฑ์ค ๋ฒํธ๋ฅผ ๋๋ฆฌ๋ฉด์ ์์
- deque_list.pop() ์ํ ์ ์ค๋ฅธ์ชฝ ์์๋ถํฐ ํ๋์ฉ ์ถ์ถ๋จ
- ํ ์ฌ์ฉ
- pop(0)์ deque์์ ์๋ํ์ง ์์
from collections import deque
deque_list=deque()
for i in range(5):
deque_list.appendlift(i) #์ผ์ชฝ๋ถํฐ ์ฐจ๋ก๋ก ๊ฐ์ด ์์. [4,3,2,1,0]
print(deque_list)
#์ถ๋ ฅ
deque([4,3,2,1,0])
- ์ฅ์
- ์ฐ๊ฒฐ๋ฆฌ์คํธ linked list ํน์ ์ง์
- ๋ฐ์ดํฐ ์ ์ฅ ์ ์์์ ๊ฐ์ ํ ์ชฝ์ผ๋ก ์ฐ๊ฒฐํ ํ, ์์์ ๋ค์ ๊ฐ์ ์ฃผ์๊ฐ์ ์ ์ฅํด ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฒฐํ๋ ๊ธฐ๋ฒ
- ๋ฐ์ดํฐ๋ฅผ ์ํ์ผ๋ก ์ ์ฅํ ์ ์์
- rotate() ํจ์: ๊ธฐ์กด deque์ ์ ์ฅ๋ ์์๋ค ๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ๋ฐ๊พธ๋ ๊ธฐ๋ฒ
- ์ฐ๊ฒฐ๋ฆฌ์คํธ linked list ํน์ ์ง์
from collections import deque
deque_list=deque()
for i in range(5):
deque_list.appendleft(i)
print(deque_list)
deque([0,1,2,3,4])
deque_list.rotate(2)
print(deque_list)
deque([3,4,0,1,2])
- reversed() ํจ์๋ก ๊ธฐ์กด๊ณผ ๋ฐ๋๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์์
print(deque(reversed(deque_list)))
deque([0,4,3,2,1])
- extend(), extendleft() ํจ์๋ฅผ ์ฌ์ฉํด ๋ฆฌ์คํธ๋ฅผ ํต์งธ๋ก ์ค๋ฅธ์ชฝ/์ผ์ชฝ์ผ๋ก ์ถ๊ฐ ๊ฐ๋ฅ
deque_list.extend([5,6,7])
print(deque_list)
deque([1,2,3,4,0,5,6,7)
deque_list.extendleft([5,6,7])
print(deque_list)
deque([7,6,5,1,2,3,4,0,5,6,7])
- ๋ฉ๋ชจ๋ฆฌ์ ํจ์จ์ ์ฌ์ฉ๊ณผ ๋น ๋ฅธ ์๋
(2) OrderedDict ๋ชจ๋
: ์์๋ฅผ ๊ฐ์ง ๋์ ๋๋ฆฌ ๊ฐ์ฒด
- ํค์ ์์๋ฅผ ๋ณด์ฅ. ์ ์ฅํ ์์๋๋ก ๊ฒฐ๊ณผ๋ฅผ ํ๋ฉด์ ์ถ๋ ฅ
- ๋์ ๋๋ฆฌ๋ก ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ ํค๋ ๊ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ ๋ ์ฌ์ฉ
def sort_by_key(t):
retuen t[0]
from collections import OrderedDict
d=dict()
d['x']=100
d['y']=200
d['z']=300
d['l']=500
#sorted() ํจ์๋ฅผ ์ฌ์ฉํด ์ ๋ ฌ
for k, v in OrderedDict(sorted(d.items(), key=sort_by_key)).items():
print(k, v)
#์ถ๋ ฅ
l 500
x 100
y 200
z 300
- ๋์
๋๋ฆฌ ๊ฐ์ธ ๋ณ์ d๋ฅผ ๋ฆฌ์คํธ ํํ๋ก ๋ง๋ฆ → sorted()ํจ์๋ฅผ ์ฌ์ฉํด ์ ๋ ฌ
- sorted(d.items(), key=sort_by_key)
- [(’l’, 500)], (’x’, 100), (’y’, 200), (’z’, 300)]
- ๊ธฐ์กด์ ๋์ ๋๋ฆฌ๋ ๋ฆฌ์คํธ์ ์์๋ฅผ ์งํค๋ฉด์ ๋์ ๋๋ฆฌ ํํ๋ก ๊ด๋ฆฌํ ์ ์์
(3) defaultdict ๋ชจ๋
: ๋์ ๋๋ฆฌ์ ๋ณ์๋ฅผ ์์ฑํ ๋ ํค์ ๊ธฐ๋ณธ๊ฐ์ ์ง์ ํ๋ ๋ฐฉ๋ฒ
- ์๋ก์ด ํค๋ฅผ ์์ฑํ ๋ ๋ณ๋ค๋ฅธ ์กฐ์น ์์ด ์๋ก์ด ๊ฐ์ ์์ฑํ ์ ์์
from collections import defaultdict
d=defaultdict(lambda:0)
print(d["first'])
0 #์คํ๊ฒฐ๊ณผ
- d=defaultdict(lambda:0)
- =defqultdict ๋ชจ๋์ ์ ์ธํ๋ ๋์์ ์ด๊น๊ฐ์ 0์ผ๋ก ์ค์
- ‘return 0’๊ณผ ๋์ผํ๋ค๊ณ ์๊ฐํ๋ฉด ๋จ
- ์ด๋ค ํค๊ฐ ๋ค์ด์ค๋๋ผ๋ ์ฒ์๊ฐ์ ์ ๋ถ 0์ผ๋ก ์ค์ ํ๋ค๋ ๋ป
from collections import defaultdict
s=[('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
d=defaultdict(list)
for k, v in s:
d[k].append(v)
print(d.items())
[('blue', [2,4]), ('red', [1]), ('yellow', [1,3])]
#์ถ๋ ฅ
dict_items(['yellow', [1,3]), ('blue', [2,4]), ('red', [1])])
- d=defaultdict(list)
- ํํ ๋ฐ์ดํฐ๋ค์ ์ด์ฐจ์ ๋ฆฌ์คํธ ํํ๋ก ์ ์ฅ
- ๋ณ์ d๋ฅผ defaultdict ํ์ ์ผ๋ก ์ ์ธํ๋ฉด์ ์ด๊น๊ฐ์ ๋ฆฌ์คํธ๋ก ์ ์ธ
- ์๋ก์ด ํค ๊ฐ์ด ์๋๋ผ๋ ๋ณ๋๋ก ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์
- → ์ฝ๋ ์๋ฅผ ์ค์ผ ์ ์๋ ์ฅ์
(4) Counter ๋ชจ๋
: ์ํ์ค ์๋ฃํ์ ๋ฐ์ดํฐ ๊ฐ์ ๊ฐ์๋ฅผ ๋์ ๋๋ฆฌ ํํ๋ก ๋ฐํํ๋ ๋ฐฉ๋ฒ. ์ํ์ค ์๋ฃํ(๋ฆฌ์คํธ, ๋ฌธ์์ด ๋ฑ) ๋ด ์ ์ฅ๋ ์์ ์ค ๊ฐ์ ๊ฐ์ด ๋ช ๊ฐ ์๋์ง ๊ฐ์ ๋ฐํ.
- ๊ธฐ์กด ๋ฌธ์์ด๊ฐ์ ๋ฆฌ์คํธํ์ผ๋ก ๋ณํ ํ text ๋ณ์์ ์ ์ฅ
from collections import Counter
text=list("gallahad")
text
['g','a','l','l','a','h','a','d']
c=Counter(text)
c
Counter({'a':3, 'l':2, 'g':1, 'h':1, 'd':1})
c["a"]
3
- ๋์
๋๋ฆฌ ํํ์ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํด ์์ฑ
- elements() ํจ์ ์ฌ์ฉํด ๊ฐ ์์์ ๊ฐ์๋งํผ ๋ฆฌ์คํธํ์ ๊ฒฐ๊ณผ ์ถ๋ ฅ
from collections import Counter
c=Counter({'red':4, 'blue':2})
print(c)
Counter({'red':4, 'blue':2})
print(list(c.elements()))
['red','red','red','red,'blue','blue']
- ํค์๋ ํํ์ ๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํด ์์ฑ
- ๋งค๊ฐ๋ณ์์ ์ด๋ฆ์ ํค๋ก, ์ค์ ๊ฐ์ ๊ฐ์ผ๋ก ํจ
from collections import Counter
c=Counter(cats=4, dogs=8)
print(c)
Counter({'dogs':8, 'cats':4})
print(list(c.elements()))
['cats','cats','cats','cats','dogs','dogs','dogs','dogs','dogs','dogs','dogs','dogs']
๊ธฐ๋ณธ ์ฌ์น์ฐ์ฐ
from collections import Counter
c=Counter(a=4=, b=2, c=0, d=-2)
d=Counter(a=1, b=2, c=3, d=4)
#์ฐจ์งํฉ
c.subtract(d)
c
Counter({'a':3, 'b':0, 'c':-3, 'd':-6})
#๋ง์
print(c+d)
Counter({'a':5, 'b':4, 'c':3, 'd':2})
#ํฉ์งํฉ
print(c&d)
Counter({'b':2, 'a':1})
#๊ต์งํฉ
print(c|d)
Counter({'a':4, 'b':4, 'c':3, 'd':2})
(5) namedtuple ๋ชจ๋
: ํํ์ ํํ๋ก ๋ฐ์ดํฐ ๊ตฌ์กฐ์ฒด๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ
from collections import namedtuple
Point=namedtuple('Point', ['x','y'])
p=Point(11, y=22) #๊ฐ์ฒด์ ๊ฐ ์ ์ฅ
p
Point(x=11, y=22)
p.x, p.y #p๋ณ์ ๊ฐ ํธ์ถ๋ฒ1
(11,22)
print(p[0]+p[1]) #p๋ณ์ ๊ฐ ํธ์ถ๋ฒ2
33
- ์ฝ๋์ค๋ช
- ์ขํํ๋ฉด์์์ ์ ์์น๋ฅผ ํํํ๊ธฐ ์ํด Point๋ผ๋ ๊ฐ์ฒด ์์ฑ ํ ๊ฐ ์ ์ฅ = namedtuple\
- Point=namedtuple('Point', ['x','y']) → Point ๊ฐ์ฒด์ ์ด๋ฆ์ Point๋ก ์ง์ , ์ ์ฅ๋๋ ์์์ ์ด๋ฆ์ x์ y๋ก ์ง์
- Point ๊ฐ์ฒด ์์ฑ
- p๋ณ์์ ์ง์ ๋ ๊ฐ ํธ์ถ
- ๋ณ์๋ช ๊ณผ ์์์ ์ด๋ฆ์ ์ (.)์ผ๋ก ์ฐ๊ฒฐ
- ์ธ๋ฑ์ค ์ฌ์ฉ; p[0]=x, p[1]=y๊ฐ
'๐ ์คํฐ๋ > ํ์ด์ฌ ์คํฐ๋ ๊ฐ์์๋ฃ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[3ํ/๊น๊ท๋ฆฌ] 7์ฐจ์ ํ์ด์ฌ ์คํฐ๋ - ์๋ฃ๊ตฌ์กฐ (2) | 2023.05.10 |
---|---|
[3ํ/๊น๊ฒฝ์] 7์ฃผ์ฐจ ํ์ด์ฌ ์คํฐ๋ - ์๋ฃ๊ตฌ์กฐ (1) | 2023.05.10 |
[1ํ/ํ๊ท๋ฆผ] 6์ฐจ์ ํ์ด์ฌ ์คํฐ๋ - ๋ฌธ์์ด (0) | 2023.05.04 |
[2ํ/๊น๊ฐ๋ฆผ, ์ต๋ค์] 6์ฐจ์ ํ์ด์ฌ ์คํฐ๋ - ๋ฌธ์์ด (0) | 2023.05.04 |
[3ํ/์ด์งํ] 6์ฐจ์ ํ์ด์ฌ ์คํฐ๋ - ๋ฌธ์์ด (0) | 2023.05.04 |