๐Ÿ“š ์Šคํ„ฐ๋””/ํŒŒ์ด์ฌ ์Šคํ„ฐ๋”” ๊ฐ•์˜์ž๋ฃŒ

[3ํŒ€/๊น€๊ฒฝ์€] 7์ฃผ์ฐจ ํŒŒ์ด์ฌ ์Šคํ„ฐ๋”” - ์ž๋ฃŒ๊ตฌ์กฐ

๊ฒฝ์€ 2023. 5. 10. 01:01

๋ฐ์ดํ„ฐ ๊ณผํ•™์„ ์œ„ํ•œ ํŒŒ์ด์ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ต์žฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์„ฑํ•œ ๊ฐ•์˜์ž๋ฃŒ์ž…๋‹ˆ๋‹ค.

7์ฐจ์‹œ_์ž๋ฃŒ๊ตฌ์กฐ_๊ฐ•์˜์•ˆ.pdf
1.18MB
7์ฐจ์‹œ_์ž๋ฃŒ๊ตฌ์กฐ_๊ณผ์ œ.pdf
2.89MB

 

์ž๋ฃŒ๊ตฌ์กฐ์˜ ๊ฐœ๋…

๋‹ค์–‘ํ•œ ํ˜•ํƒœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ

๋ฐ์ดํ„ฐ ์ €์žฅ ์‚ฌ๋ก€ : ์ „ํ™”๋ฒˆํ˜ธ๋ถ€

  • ๊ณผ๊ฑฐ : “Yellow Page”๋ผ๋Š” ๋‘๊บผ์šด ์ „ํ™”๋ฒˆํ˜ธ๋ถ€์—์„œ ์ „ํ™”๋ฒˆํ˜ธ ๊ฒ€์ƒ‰
  • ํ˜„์žฌ๋Š” ์ „ํ™”๋ฒˆํ˜ธ๋ถ€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ผ์ด ์—†์ง€๋งŒ ์ „ํ™”๋ฒˆํ˜ธ๋ถ€์—์„œ ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ ์ด๋ฆ„์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐ€๋‚˜๋‹ค ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฐฉ์‹์ด ์ง€๊ธˆ๋„ ์‚ฌ์šฉ๋œ๋‹ค.
  • ๋ฐ์ดํ„ฐ ํŠน์ง•์„ ๊ณ ๋ คํ•˜์—ฌ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž๋ฃŒ๊ตฌ์กฐ๋ผ๊ณ  ํ•จ

์‹ค์ƒํ™œ์—์„œ ๋ฐ์ดํ„ฐ์˜ ํŠน์ง•์„ ๋ฐ˜์˜ํ•˜์—ฌ ์ €์žฅํ•ด์•ผ ํ•  ์ •๋ณด

  • ์€ํ–‰์˜ ๋ฒˆํ˜ธํ‘œ๋Š” ๋ฒˆํ˜ธํ‘œ ๋‹จ๋ง๊ธฐ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฒˆํ˜ธํ‘œ๋ฅผ ํ•˜๋‚˜์”ฉ ๋ฝ‘์œผ๋ฉด ๋Œ€๊ธฐ ์ธ์›์ด 1์”ฉ ์ฆ๊ฐ€ํ•˜๊ณ , ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ ์€ํ–‰ ์„œ๋น„์Šค ์ด์šฉ์„ ์ข…๋ฃŒํ•˜๋ฉด 1์”ฉ ๊ฐ์†Œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฒˆํ˜ธํ‘œ์˜ ๋ฒˆํ˜ธ ์ •๋ณด์™€ ํ˜„์žฌ ๋Œ€๊ธฐ ์ธ์›์„ ๋ชจ๋‘ ๊ด€๋ฆฌํ•ด์•ผ ํšจ์œจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ
  • ํƒ๋ฐฐ ์ˆ˜ํ™”๋ฌผ์„ ํŠธ๋Ÿญ์— ์Œ“์„ ๋•Œ ์œ„์น˜ ์ •๋ณด๋ฅผ ์–ด๋–ป๊ฒŒ ์ €์žฅํ• ์ง€์— ๋Œ€ํ•œ ๊ฒƒ
  • ๋‚˜์ค‘์— ๋ฐฐ๋‹ฌํ•˜๋Š” ์ˆ˜ํ™”๋ฌผ์ผ์ˆ˜๋ก ํŠธ๋Ÿญ ์•ˆ์ชฝ์— ์Œ“๊ณ , ๋จผ์ € ๋ฐฐ๋‹ฌํ•˜๋Š” ์ˆ˜ํ™”๋ฌผ์ผ์ˆ˜๋ก ํŠธ๋Ÿญ ์ž…๊ตฌ์ชฝ์— ์Œ“๋Š” ๊ฒƒ์ด ์ข‹์Œ

๐Ÿ’ก ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ํŠน์ง•์ด ์žˆ๋Š” ์ •๋ณด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ํšจ์œจ์ ์œผ๋กœ ์ €์žฅ ๋ฐ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ํŠนํžˆ ๋Œ€์šฉ๋Ÿ‰์ผ์ˆ˜๋ก ๋ฉ”๋ชจ๋ฆฌ์— ๋นจ๋ฆฌ ์ €์žฅํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•จ์œผ๋กœ์จ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ์‹คํ–‰ ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

 

ํŒŒ์ด์ฌ์—์„œ์˜ ์ž๋ฃŒ๊ตฌ์กฐ

์ž๋ฃŒ๊ตฌ์กฐ๋ช…             ํŠน์ง•

์Šคํƒ(stack) ๋‚˜์ค‘์— ๋“ค์–ด์˜จ ๊ฐ’์ด ๋จผ์ € ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ(last in first out)
ํ(queue) ๋จผ์ € ๋“ค์–ด์˜จ ๊ฐ’์ด ๋จผ์ € ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ(first in first out)
ํŠœํ”Œ(tuple) ๋ฆฌ์ŠคํŠธ์™€ ๊ฐ™์ง€๋งŒ ๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
์„ธํŠธ(set) ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ณ , ์ˆ˜ํ•™์˜ ์ง‘ํ•ฉ ์—ฐ์‚ฐ์„ ์ง€์›ํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
๋”•์…”๋„ˆ๋ฆฌ (dictionary) ์ „ํ™”๋ฒˆํ˜ธ๋ถ€์™€ ๊ฐ™์ด ํ‚ค(key)์™€ ๊ฐ’(value)์˜ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋ฉฐ ์—ฌ๊ธฐ์„œ ํ‚ค๊ฐ’ ์€ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ์™€ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Œ
collections ๋ชจ๋“ˆ ์œ„์— ์—ด๊ฑฐ๋œ ์—ฌ๋Ÿฌ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ํŒŒ์ด์ฌ ๋‚ด์žฅ(built-in) ๋ชจ๋“ˆ

 

์Šคํƒ

  • ์Šคํƒ (stack) ์€ ์ปดํ“จํ„ฐ๊ณตํ•™๊ณผ ํ•™์ƒ๋“ค์ด ์ „๊ณต์„ ์‹œ์ž‘ํ•˜๋ฉด์„œ ์ฒ˜์Œ ๋ฐฐ์šฐ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋กœ, ์ž๋ฃŒ๊ตฌ์กฐ์˜ ํ•ต์‹ฌ ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜์ด๋‹ค.
  • ์Šคํƒ์„ ๊ฐ„๋‹จํžˆ ํ‘œํ˜„ํ•˜๋ฉด 'Last In First Out'์œผ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ๋งˆ์ง€๋ง‰์— ๋“ค์–ด๊ฐ„ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ๋‚˜์˜ค๋Š” ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ ๊ณต๊ฐ„์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • ์ผ๋ฐ˜์ ์œผ๋กœ ์Šคํƒ์ด๋ผ๊ณ  ํ•˜๋ฉด ๋ฐ‘์˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ์‚ฌ๊ฐํ˜•์˜ ์ €์žฅ ๊ณต๊ฐ„์„ ๋œปํ•œ๋‹ค. ์ฆ‰ 4.10๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„์œผ๋กœ ๋ฆฌ์ŠคํŠธ์™€ ๋น„์Šทํ•˜์ง€๋งŒ ์ €์žฅ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ๋Š” ํ˜•ํƒœ๋ฅผ ์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ (stack data sructure) ๋ผ๊ณ  ํ•œ๋‹ค.
  • ์Šคํƒ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์„ ํ‘ธ์‹œ push, ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๋Š” ๊ฒƒ์„ ํŒ(pop)์ด๋ผ๊ณ  ํ•œ๋‹ค.

์Šคํƒ์€ ์–ด๋–ค ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ?

  • ํƒ๋ฐฐ ์ˆ˜ํ™”๋ฌผ์„ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹ : ๋จผ์ € ๋ฐฐ๋‹ฌํ•ด์•ผ ํ•˜๋Š” ์ˆ˜ํ™”๋ฌผ์€ ํŠธ๋Ÿญ์˜ ์ž…๊ตฌ์ชฝ์—, ๋‚˜์ค‘์— ๋ฐฐ๋‹ฌํ•ด์•ผ ํ•˜๋Š” ์ˆ˜ํ™”๋ฌผ์€ ํŠธ๋Ÿญ์˜ ์•ˆ์ชฝ์— ๋„ฃ์–ด์•ผ ํ•œ๋‹ค.
  • ์ˆ˜ํ™”๋ฌผ์„ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋กœ ๋ณธ๋‹ค๋ฉด ๋จผ์ € ๋“ค์–ด๊ฐ„ ์ˆ˜ํ™”๋ฌผ๋ณด๋‹ค ๋‚˜์ค‘์— ๋“ค์–ด๊ฐ„ ์ˆ˜ํ™”๋ฌผ์ด ๋จผ์ € ๋‚˜์™€์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์ด๋‹ค. ์ˆ˜ํ™”๋ฌผ๊ณผ ๋น„์Šทํ•œ ๊ฐœ๋…์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์ €์žฅํ–ˆ์„ ๋•Œ ์ข€ ๋” ์‰ฝ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŒŒ์ด์ฌ์—์„œ์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•œ ์Šคํƒ ๊ตฌํ˜„

  • ๋ฆฌ์ŠคํŠธ๋กœ ์ €์žฅ ๊ณต๊ฐ„์„ ๋งŒ๋“  ํ›„ append() ํ•จ์ˆ˜๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ (push) ํ•˜๊ณ  pop() ํ•จ์ˆ˜๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœ (pop) ํ•œ๋‹ค.
>>> a = [1,2,3,4,5]
>>> a.append (10)
>>> a
[1, 2, 3, 4, 5, 10]
>>> a.append(20)
>>> a
[1, 2, 3, 4, 5, 10, 20]
>>> a.ั€ะพั€()
20
>>> a.pop()
10
  1. ๋ณ€์ˆ˜ a์— [1, 2, 3, 4, 5]๊ฐ€ ํ• ๋‹น๋œ๋‹ค.
  2. ๋ณ€์ˆ˜ a์— 10๊ณผ 20์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ณ€์ˆ˜ a์—๋Š” [1, 2, 3, 4, 5, 10, 20]์ด ํ• ๋‹น๋œ๋‹ค.
  3. ๋‹ค์Œ์œผ๋กœ pop() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์ €์žฅ๋œ ๊ฐ’์„ ์ถ”์ถœํ•˜๊ณ  ๋™์‹œ์— ๋ฆฌ์ŠคํŠธ์—์„œ ์‚ญ์ œ์‹œํ‚จ๋‹ค. ์ฆ‰, pop() ํ•จ์ˆ˜๋ฅผ ์ฒ˜์Œ ์‹คํ–‰ํ•˜๋ฉด ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์ €์žฅ๋œ 20์ด ์ถ”์ถœ๋˜๋ฉด์„œ ํ™”๋ฉด์— ์ถœ๋ ฅ๋˜๊ณ , ๋™์‹œ์— ๋ณ€์ˆ˜ a์˜ ๊ฐ’์€ [1, 2, 3, 4, 5,10] ์œผ๋กœ ๋ฐ”๋€๋‹ค.
  4. ๋‹ค์‹œ pop() ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋งˆ์ง€๋ง‰์— ์ €์žฅ๋œ 10์ด ์ถ”์ถœ๋˜๋ฉด์„œ ํ™”๋ฉด์— ์ถœ๋ ฅ๋˜๊ณ , ๋™์‹œ์— ๋ณ€์ˆ˜ a์˜ ๊ฐ’์€ [1, 2, 3, 4, 5]๋กœ ๋ฐ”๋€๋‹ค.

[์ฐธ๊ณ ]

์‚ฌ์‹ค ํŒŒ์ด์ฌ์—์„œ๋Š” ํ›จ์”ฌ ๋” ํšจ์œจ์ ์ด๊ณ  ๊ฐ•๋ ฅํ•œ ์Šคํƒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ œ๊ณตํ•œ๋‹ค. collections๋ผ๋Š” ๋ชจ๋“ˆ์ด ์žˆ๋Š”๋ฐ ์ด ๋ชจ๋“ˆ์—์„œ deque๋ฅผ ํ†ตํ•ด ์กฐ๊ธˆ ๋” ๋น ๋ฅด๊ฒŒ ์Šคํƒ์ด๋ผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์Šคํƒ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ

  • ์ž…๋ ฅํ•œ ํ…์ŠคํŠธ๋ฅผ ์—ญ์ˆœ์œผ๋กœ ์ถ”์ถœํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ
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])

์ •๋‹ต

Input a word: PYTHON           * ์‚ฌ์šฉ์ž ์ž…๋ ฅ(PYTHON)
['P', 'Y', 'T', 'H', 'O', 'N']
['N', 'O', 'H', 'T', 'Y', 'P']
NOHTYP
  1. ์ž…๋ ฅํ•œ ํ…์ŠคํŠธ๋Š” ๋ณ€์ˆ˜ word์— ์ €์žฅ๋˜๊ณ  ๊ทธ ๊ฐ’์„ ๋ฆฌ์ŠคํŠธํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
  2. ๊ทธ ํ›„ ๊ฐ’์„ ์ฐจ๋ก€๋Œ€๋กœ ์ถ”์ถœํ•˜๋ฉด ์ž…๋ ฅํ•œ ํ…์ŠคํŠธ์˜ ์—ญ์ˆœ๊ฐ’์ด ์ถœ๋ ฅ๋œ๋‹ค.ํŒŒ์ด์ฌ์—์„œ ๊ต‰์žฅํžˆ ๋งŽ์ด ์“ฐ์ด๋Š” ์ฝ”๋“œ ์ค‘ ํ•˜๋‚˜์ด๋‹ค.
  3. ์ผ๋ฐ˜์ ์œผ๋กœ for๋ฌธ์—์„œ ๋งŽ์ด ์“ฐ์ด๋Š”๋ฐ, for๋ฌธ์— _ ๊ธฐํ˜ธ๊ฐ€ ์žˆ์œผ๋ฉด ํ•ด๋‹น ๋ฐ˜๋ณต๋ฌธ์—์„œ ์ƒ์„ฑ๋˜๋Š” ๊ฐ’์€ ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋œป์ด๋‹ค. ์œ„์˜ ์ฝ”๋“œ์—์„œ๋Š” 6ํ–‰์˜ range(len (world_List))์—์„œ ์ƒ์„ฑ๋˜๋Š” ๊ฐ’์„ ๋ฐ˜๋ณต๋ฌธ ๋‚ด์—์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ• ๋‹น๋ฐ›์€ ๊ฒƒ์ด๋‹ค.

ํ

  • ์Šคํƒ์˜ ๋ฐ˜๋Œ€ ๊ฐœ๋…
  • ํqucuc๋Š” ์Šคํƒ๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋จผ์ € ๋“ค์–ด๊ฐ„ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜์˜ค๋Š” 'Fist in First Out'์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

  • ์•ž์—์„œ ๋งํ•œ๊ฒƒ์ฒ˜๋Ÿผ ์€ํ–‰์—์„œ ๋Œ€๊ธฐ ๋ฒˆํ˜ธํ‘œ๋ฅผ ๋ฝ‘์„ ๋•Œ ๋ฒˆํ˜ธ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ด ๋Œ€ํ‘œ์ ์ธ ์‚ฌ๋ก€์ด๋‹ค. ๋จผ์ € ์˜จ ์‚ฌ๋žŒ์ด ์•ž์˜ ๋ฒˆํ˜ธํ‘œ๋ฅผ ๋ฝ‘๊ณ , ๋ฒˆํ˜ธ๊ฐ€ ๋น  ๋ฅธ ์‚ฌ๋žŒ์ด ๋จผ์ € ์„œ๋น„์Šค๋ฅผ ๋ฐ›๋Š” ๊ตฌ์กฐ์ด๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ๊ฐœ๋…

  • ๋ฉ”๋ชจ๋ฆฌ ๊ฐœ๋…์œผ๋กœ ๋ณผ ๋•Œ ํ๋Š” ์Šคํƒ๋ณด๋‹ค ๊ตฌํ˜„์ด ์กฐ๊ธˆ ๋” ๋ณต์žกํ•˜๋‹ค.
  • ์Šคํƒ์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์‹œ์ž‘ํ•˜๋Š” ์ง€์ ์ด ๊ณ ์ •๋˜์–ด ์žˆ์ง€๋งŒ. ํ๋Š” ์ฒ˜์Œ์— ๊ฐ’์ด ์ €์žฅ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ๊ฐ’์ด ์‚ฌ์šฉ๋จ์— ๋”ฐ๋ผ ๊ณ„์† ๋ฐ”๋€Œ๊ฒŒ ๋˜์–ด ๊ตฌํ˜„์— ์ข€ ๋” ์‹ ๊ฒฝ์„ ์จ์•ผ ํ•œ๋‹ค. ํŒŒ์ด์ฌ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋ถ€๋ถ„์ด ์ž๋™์œผ๋กœ ๊ตฌํ˜„๋˜๋ฏ€๋กœ ์–ด๋ ต์ง€ ์•Š๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํŒŒ์ด์ฌ์—์„œ ํ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์Šคํƒ์˜ ๊ตฌํ˜„๊ณผ ๊ฐ™์€๋ฐ, pop() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ธ๋ฑ์Šค๊ฐ€ 0๋ฒˆ์งธ์ธ ๊ฐ’์„ ์“ด๋‹ค๋Š” ์˜๋ฏธ๋กœ pop(0)์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ์ฆ‰, pop() ํ•จ์ˆ˜๊ฐ€ ๋ฆฌ์ŠคํŠธ์˜ ๋งˆ์ง€๋ง‰ ๊ฐ’์„ ๊ฐ€์ ธ์˜จ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ pop(0)์€ ๋งจ ์ฒ˜์Œ ๊ฐ’์„ ๊ฐ€์ ธ์˜จ๋‹ค๋Š” ๋œป์ด๋‹ค.
>>> a=[1,2,3,4,5]
>>> a.append (10)         # a = [1, 2, 3, 4, 5, 10]
>>> a.append (20)         # a = [1, 2, 3, 4, 5, 10, 20]
›>> a.ั€ะพั€(0)
1
>>> a.pop (0)
2

+๋””ํ

ํ์™€ ์Šคํƒ์ด ํ˜ผํ•ฉ๋œ ๊ฐœ๋…์ด๋‹ค.

์•ž, ๋’ค ์–‘๋ฐฉํ–ฅ์—์„œ push์™€ pop์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๊ฐ€์žฅ ๋จผ์ € ๋„ฃ์€ ์ž๋ฃŒ๋ถ€ํ„ฐ ๊บผ๋‚ผ ์ˆ˜๋„ ์žˆ๊ณ  ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ๋„ฃ์€ ์ž๋ฃŒ๋ถ€ํ„ฐ ๊บผ๋‚ผ ์ˆ˜๋„ ์žˆ๋Š” ๋ฐฉ์‹์ด๋‹ค.

 

ํŠœํ”Œ

  • ๋ฆฌ์ŠคํŠธ์™€ ๊ฐ™์€ ๊ฐœ๋…์ด์ง€๋งŒ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ฆฌ์ŠคํŠธ
>>> 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 ๋‚˜ ๊ณฑ์…ˆ t * 2, ๊ทธ๋ฆฌ๊ณ  len() ํ•จ์ˆ˜์™€ ๊ฐ™์ด ๋ฆฌ์ŠคํŠธํ˜• ๋ฐ์ดํ„ฐ์— ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํŠœํ”Œ๊ณผ ๋ฆฌ์ŠคํŠธ์˜ ์ฐจ์ด์ ์ด ์žˆ๋‹ค๋ฉด, ํŠœํ”Œ์˜ ๊ฐ’์€ ๋งˆ์Œ๋Œ€๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋งŒ์•ฝ ํŠœํ”Œ์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
>>> t[1]=5
Traceback (most recent call last):
    File "stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

TypeError: 'tuple' object does not support item assignment

→ ํŠœํ”Œ ์˜ค๋ธŒ์ ํŠธ(uple' obiect)์—๋Š” ์ƒˆ๋กœ์šด ์•„์ดํ…œ(item)์˜ ํ•  ๋‹น์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.' ๋ผ๋Š” ๋‚ด์šฉ

 

๋งŒ์•ฝ, ๊ฐ’์ด ํ•˜๋‚˜์ผ๋•Œ์˜ ํŠœํ”Œ ์„ ์–ธ ๋ฐฉ๋ฒ•

t= (1)๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ์ƒ๊ฐ๋‚  ์ˆ˜ ์žˆ์ง€๋งŒ ํŒŒ์ด์ฌ์€ ์ด๋ ‡๊ฒŒ ์„ ์–ธํ•  ๊ฒฝ์šฐ 1 = 1๋กœ ์ดํ•ดํ•œ๋‹ค. ์ธํ„ฐํ”„๋ฆฐํ„ฐ๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ์„ค๊ณ„ ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— t= (5 + 2) * 2์™€ ๊ฐ™์ด ์—ฐ์‚ฐ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ด„ํ˜ธ๋กœ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ’์ด ํ•˜๋‚˜์ผ ๋•Œ๋Š” t= (1. )์™€ ๊ฐ™์ด ๋ฐ˜๋“œ์‹œ ์ฝค๋งˆ(.)๋ฅผ ๋ถ™์—ฌ t๊ฐ€ ํŠœํ”Œ์ž„์„ ์„ ์–ธํ•ด์•ผ ํ•œ๋‹ค.

์ด๋ ‡๊ฒŒ ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜๋„ ์—†๋Š” ํŠœํ”Œ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋Š”?

  • ์‚ฌ์‹ค ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋‹ค ๋ณด๋ฉด ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ ๊ณผ ํ•จ๊ป˜ ์ž‘์—…ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ์ž์‹ ์ด ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๋งŒ ๋งŒ๋“ค๊ณ , ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๊ทธ ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๊ฐ’์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ๋ฐœ์ƒํ•œ๋‹ค. ์ด๋•Œ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ํƒ€์ž…์„ ํŠœํ”Œ๋กœ ์„ ์–ธํ•˜๋ฉด ๋ฐ›์•„์„œ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์ด ๋งˆ์Œ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๊พธ์ง€ ๋ชปํ•˜๊ฒŒ ๋œ๋‹ค.
  • ๊ทธ๋ ‡๋‹ค๋ฉด ๋ฐ”๋€Œ๋ฉด ์•ˆ๋˜๋Š” ๋ฐ์ดํ„ฐ์—๋Š” ์–ด๋–ค ๊ฒƒ์ด ์žˆ์„๊นŒ? ํ•™๋ฒˆ์ด๋‚˜ ์ด๋ฆ„, ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ์™€ ๊ฐ™์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์•ˆ ๋˜๋Š” ์ •๋ณด ๋“ฑ์ด๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ด๋Ÿฌํ•œ ์ดํ•ด ์—†์ด ๋งˆ์Œ๋Œ€๋กœ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ•  ๋•Œ ํŠœํ”Œ์€ ์ด๋ฅผ ๋ฐฉ์ง€ํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

์„ธํŠธ

  • ์„ธํŠธ(set) ๋Š” ๊ฐ’์„ ์ˆœ์„œ ์—†์ด ์ €์žฅํ•˜๋˜ ์ค‘๋ณต์„ ๋ถˆํ—ˆ ํ•˜๋Š” ์ž๋ฃŒํ˜•์œผ๋กœ ์ˆ˜ํ•™์˜ ์ง‘ํ•ฉ๊ณผ ๊ฐœ๋… ์ ์œผ๋กœ ์•„์ฃผ ๋น„์Šทํ•˜๋‹ค.
  • ์ค‘๋ณต์„ ๋ถˆํ—ˆ ํ•˜๋Š” ํŠน์ง• ๋•Œ๋ฌธ์— ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๋งค์šฐ ์œ ์šฉํ•˜๋‹ค.
  • ๋Œ€ํ‘œ์ ์œผ๋กœ ๋ฌธ์„œ ํ•˜๋‚˜์— ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๋‹จ์–ด ์ข…๋ฅ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์…€ ๋•Œ ๋ชจ๋“  ๋‹จ์–ด๋ฅผ ์ถ”์ถœํ•œ ํ›„ ์„ธํŠธ๋กœ ๋ณ€ํ™˜ ํ•˜๋ฉด ๋‹จ์–ด ์ข…๋ฅ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค. ํŒŒ์ด์ฌ์—์„œ๋Š” ์„ธํŠธ ์„ ์–ธ์„ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค.
>>> s=set([1, 2, 3, 1, 2, 3]) 
# set() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 1, 2, 3์„ ์„ธํŠธ ๊ฐ์ฒด๋กœ ์ƒ์„ฑ
>>> s
{1, 2, 3}
  • ์„ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด set() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์ŠคํŠธ๋‚˜ ํŠœํ”Œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์œผ๋ฉด ํ•ด๋‹น ๊ฐ’์ด ์„ธํŠธ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜๋œ๋‹ค. ์œ„ ์ฝ”๋“œ์ฒ˜๋Ÿผ [1, 2, 3, 1, 2, 3]์ด๋ผ๋Š” ๋ฆฌ์ŠคํŠธํ˜•์˜ ๊ฐ’์„ ์„ธํŠธ๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด, ์ค‘๋ณต์„ ์ œ๊ฑฐํ•œ ํ›„ {1, 2, 3}์œผ๋กœ ๋ณ€ํ™˜๋˜์–ด ์ถœ๋ ฅ๋œ๋‹ค.

์„ธํŠธ๋Š” ํŠœํ”Œ๊ณผ ๋‹ค๋ฅด๊ฒŒ ์‚ญ์ œ๋‚˜ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅ

>>> s
{1, 2, 3}
>>> s.add(1)  # 1์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ช…๋ น์ด์ง€๋งŒ ์ค‘๋ณต ๋ถˆํ—ˆ๋กœ ์ถ”๊ฐ€๋˜์ง€ ์•Š์Œ
>>> s
{1, 2, 3}
>>> s.remove(1)                  # 1 ์‚ญ์ œ
>>> s
(2, 3}
>>> s.update([1, 4, 5, 6, 7])    # [1, 4, 5, 6, 7] ์ถ”๊ฐ€
>>> s
{1, 2, 3, 4, 5, 6, 7}
>>> s.discard(3)                 # 3 ์‚ญ์ œ
>>> s
{1, 2, 4, 5, 6, 7} 
>>> s.clear()                    # ๋ชจ๋“  ์›์†Œ ์‚ญ์ œ
>>> s
set ()
  • ์„ธํŠธ๋ฅผ ์ง€์›ํ•˜๋Š” ํ•จ์ˆ˜์—๋Š” ์›์†Œ ํ•˜๋‚˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” add(), ์›์†Œ ํ•˜๋‚˜๋ฅผ ์ œ๊ฑฐํ•˜๋Š” remove() ๋˜๋Š” discard(), ์ƒˆ๋กœ์šด ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ทธ๋Œ€๋กœ ์ถ”๊ฐ€ํ•˜๋Š”update(), ๋ชจ๋“  ๋ณ€์ˆ˜๋ฅผ ์ง€์šฐ๋Š” clear() ๋“ฑ์ด ์žˆ๋‹ค.
  • ๊ฐ’์€ ๋ชจ๋‘ ์ˆœ์„œ ์—†์ด ์ €์žฅ๋˜๋Š” ๋™์‹œ์— ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ณ  ์ €์žฅ๋œ๋‹ค.

  • ํŒŒ์ด์ฌ์˜ ์„ธํŠธ๋Š” ์ˆ˜ํ•™์˜ ์ง‘ํ•ฉ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‹ค์–‘ํ•œ ์ง‘ํ•œ ์—ฐ์‚ฐ์„ ์ œ๊ณตํ•˜์—ฌ ์ง‘ํ•ฉ ์—ฐ์‚ฐ์—๋Š” ๊ต์ง‘ํ•ฉ, ํ•ฉ์ง‘ํ•ฉ, ์ฐจ์ง‘ํ•ฉ์ด ์žˆ๋‹ค.
>>> 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 | s2                    # set([1,2,3,4,5,6,7])
{1, 2, 3, 4,5, 6, 7}
>>> s1.intersection(s2)        # s1๊ณผ s2์˜ ๊ต์ง‘ํ•ฉ
{3, 4, 5}
>>> s1 & s2                    # set([3, 4, 5])
{3, 4, 5}
>>> s1.difference(s2)         # s1๊ณผ s2์˜ ์ฐจ์ง‘ํ•ฉ
{1, 2}
>>> s1 - s2                    # set([1, 2])
{1, 2}

ํ•ฉ์ง‘ํ•ฉ

  • ๋‘ ์ง‘ํ•ฉ์˜ ์ค‘๋ณต๊ฐ’์„ ์ œ๊ฑฐํ•˜๊ณ  ํ•ฉ์น˜๋Š” ์—ฐ์‚ฐ
  • s1.union(s2)๋ฅผ ํ†ตํ•ด s1,๊ณผ s2์˜ ํ•ฉ์ง‘ํ•ฉ์ด ์ถœ๋ ฅ๋œ๋‹ค.
  • ํ•ฉ์ง‘ํ•ฉ์€ union() ๊ณผ ๊ฐ™์€ ํ•จ์ˆ˜๋กœ๋„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, | ๊ธฐํ˜ธ๋กœ๋„ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.
  • s1 | s2 ์˜ ๊ฒฐ๊ณผ๊ฐ€ s1.union(s2) ์™€ ๋™์ผํ•˜๋‹ค.

๊ต์ง‘ํ•ฉ

  • ๋‘ ์ง‘ํ•ฉ ์–‘์ชฝ์— ๋ชจ๋‘ ํฌํ•จ๋œ ๊ฐ’๋งŒ ์ถ”์ถœํ•˜๋Š” ์—ฐ์‚ฐ
  • s1,s2 ๋Š” ๋ชจ๋‘ 3,4,5 ๋ฅผ ์›์†Œ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์–ด s1.intersection(s2) ๋‚˜ s1 & s2 ๋กœ ๊ต์ง‘ํ•ฉ์„ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ต์ง‘ํ•ฉ์˜ ๊ฐœ๋…์€ if๋ฌธ์—์„œ ๋ฐฐ์› ๋˜ and ์กฐ๊ฑด์˜ ๊ฐœ๋…๊ณผ ๋น„์Šทํ•˜๋‹ค.

์ฐจ์ง‘ํ•ฉ

  • ์•ž์— ์žˆ๋Š” s1์˜ ์›์†Œ ์ค‘ s2์— ํฌํ•จ๋œ ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ์—ฐ์‚ฐ
  • s1์—์„œ s1๊ณผ s2์˜ ๊ต์ง‘ํ•ฉ ์›์†Œ๋ฅผ ์‚ญ์ œํ•˜์—ฌ s1์€ [1, 2, 3, 4, 5]๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ [3, 4, 5] ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด [1, 2]๋งŒ ๋‚จ๋Š”๋‹ค.
  • s1.difference(s2) ๋˜๋Š” s1 - s2 ๋กœ ์ฐจ์ง‘ํ•ฉ์„ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

์—ฐ์‚ฐ                         ํ•จ์ˆ˜                                        ๊ธฐํ˜ธ            ์˜ˆ์‹œ

ํ•ฉ์ง‘ํ•ฉ union | s1.union(s2), s1 | s2
๊ต์ง‘ํ•ฉ intersection & s1.intersection(s2), s1 & s2
์ฐจ์ง‘ํ•ฉ difference - s1.difference(s2), s1-s2

 

๋”•์…”๋„ˆ๋ฆฌ

  • ์˜์–ด์‚ฌ์ „์—์„œ ๊ฒ€์ƒ‰์„ ์œ„ํ•ด ์˜์–ด ๋‹จ์–ด๋“ค์„ ์ €์žฅํ•ด ๋†“์€ ๋ฐฉ์‹๊ณผ ๋น„์Šท
  • ์˜์–ด์‚ฌ์ „์—์„œ๋Š” ๊ฐ ๋‹จ์–ด๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ƒ‰์ธ(index)์„ ๋งŒ๋“ค์–ด ๋†“๊ณ  ์ƒ‰์ธ์„ ํ†ตํ•ด ๊ทธ ๋‹จ์–ด๋ฅผ ์ฐพ์•„ ์˜๋ฏธ๋ฅผ ํŒŒ์•…ํ•œ๋‹ค.
  • ์ƒ‰์ธ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ธฐ ์‰ฝ๋„๋ก ๊ตฌ๋ถ„ํ•ด ๋†“์€ ์œ ์ผํ•œ ์ •๋ณด์ด๋ฉฐ ๋‹จ์–ด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ์‹

ํ‚ค (key), ๊ฐ’(value)

  • ๋”•์…”๋„ˆ๋ฆฌ ๊ตฌ์กฐ์—์„œ๋Š” ๋ฐ์ดํ„ฐ์˜ ์œ ์ผํ•œ ๊ตฌ๋ถ„์ž์ธ ํ‚ค๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๊ฒŒํ•˜๊ณ , ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ’์ด๋ผ๋Š” ์ด๋ฆ„๊ณผ ์Œ์œผ๋กœ ์ €์žฅํ•˜์—ฌ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
  •  ํ•™๋ฒˆ                                     ์ด๋ฆ„                         ์ƒ๋…„์›”์ผ                               ์ฃผ์†Œ
    20150230 ํ™๊ธธ๋™ 1995-04-03 ์„œ์šธ์‹œ ๋™๋Œ€๋ฌธ๊ตฌ
    20150233 ๊น€์˜์ฒ  1995-04-20 ์„ฑ๋‚จ์‹œ ๋ถ„๋‹น๊ตฌ
    20150234 ์˜ค์˜์‹ฌ 1996-01-03 ์„ฑ๋‚จ์‹œ ์ค‘์›๊ตฌ
    20150236 ์ตœ์„ฑ์ฒ  1995-12-27 ์ธ์ฒœ์‹œ ๊ณ„์–‘๊ตฌ
    • ๋Œ€ํ•™์ƒ ์ธ์ ์‚ฌํ•ญ์—์„œ ํ•™๋ฒˆ์ด ๋‚˜๋จธ์ง€ ์ •๋ณด๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ํ‚ค๋กœ, ํ•™๋ฒˆ์„ ํ‚ค๋กœ ํ•˜์—ฌ ์ด๋ฆ„, ์ƒ๋…„์›”์ผ, ์ฃผ์†Œ๋ฅผ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ์ €์žฅํ•œ ๋‹ค์Œ ํ•œ ๋ฒˆ์— ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๊ฐ€ ๋˜๋ฉด ํ•™๋ฒˆ์„ ์ด์šฉํ•ด ๋‹ค๋ฅธ ์ •๋ณด์— ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ‚ค์™€ ๊ฐ’์„ ์Œ์œผ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์€ ์‹ค์ƒํ™œ์—์„œ ๊ฐœ์ธ์˜ ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ๋‚˜ ํ•™๊ต์˜ ํ•™๋ฒˆ, ์ œํ’ˆ ๋ฒˆํ˜ธ ๋“ฑ์€ ๋ชจ๋‘ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ํ‚ค๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŒŒ์ด์ฌ์—์„œ์˜ ๋”•์…”๋„ˆ๋ฆฌ

๐Ÿ’ก ๋”•์…”๋„ˆ๋ฆฌ ๋ณ€์ˆ˜ = {ํ‚ค1 : ๊ฐ’1, ํ‚ค2 : ๊ฐ’2, ํ‚ค3 : ๊ฐ’3, ,,,}

ํ•™๋ฒˆ (ํ‚ค)                                                                                      ์ด๋ฆ„ (๊ฐ’)

20140012 Sungchul
20140059 Jiyong
20150234 Jaehong
20140058 Wonchul

ํ•™๋ฒˆ → ํ‚ค, ์ด๋ฆ„ → ๊ฐ’

  • ๋‹ค์–‘ํ•œ ์ž๋ฃŒํ˜•์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์–ด ์ด๋ฆ„์€ ๋ฌธ์ž์—ด์ด๋ฏ€๋กœ ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ž์—ด๋กœ ์ €์žฅํ•œ๋‹ค.
  • ๊ทธ๋Ÿฌ๋‚˜ ๋ฆฌ์ŠคํŠธ์™€ ๊ฐ™์ด ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค๊ฑฐ๋‚˜, ํŠœํ”Œ ๋˜๋Š” ์„ธํŠธ์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”•์…”๋„ˆ๋ฆฌ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.
>>> student_info = {20140012 : 'Sungchul', 20140059 : 'Jiyong', 20150234 : 'Jaehong'}
  • student_info ๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ๋จผ์ € ์„ ์–ธํ•œ ํ›„, ํ•ด๋‹น ๋ณ€์ˆ˜์— {ํ‚ค:๊ฐ’} ํ˜•ํƒœ๋กœ ๊ฐ’์„ ์ž…๋ ฅํ•œ๋‹ค.

ํ•ด๋‹น ๋ณ€์ˆ˜์—์„œ ํŠน์ • ๊ฐ’์„ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•

>>> student_info[20140012]
'Sungchul'
  • ํ•ด๋‹น ๊ฐ’์˜ ํ‚ค๋ฅผ ๋Œ€๊ด„ํ˜ธ [] ์•ˆ์— ๋„ฃ์–ด ํ˜ธ์ถœํ•˜๋ฉด ๋œ๋‹ค.
  • ํ‚ค๋Š” ๋ฌธ์ž์—ด๋กœ ์„ ์–ธํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์ •์ˆ˜ํ˜•์œผ๋กœ ์„ ์–ธํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
  • ๋ณ€์ˆ˜์˜ ์ž๋ฃŒํ˜•์„ ์ •ํ™•ํžˆ ๋ชจ๋ฅด๊ณ  ํ˜ธ์ถœํ•œ๋‹ค๋ฉด ๋ฆฌ์ŠคํŠธ๋กœ ์˜คํ•ดํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ๋ฐ˜๋“œ์‹œ ๊ธฐ์–ตํ•ด์•ผํ•œ๋‹ค.

์žฌํ• ๋‹น๊ณผ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€

>>> student_info[20140012] = 'Sungchul'
>>> student_info[20140012]
'Sungchul'
>>> student_info[20140039] = 'Wonchul'
>>> student_info
{20140012 : 'Sungchul', 20140059 : 'Jiyong', 20140058 : 'Jaehong', 20140039 : 'Wonchul'}
  • ํ‚ค๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ํ›„ ์ƒˆ๋กœ์šด ๊ฐ’์„ ํ• ๋‹น
  • ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€๋„ ์ƒˆ๋กœ์šด ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ํ• ๋‹นํ•˜๊ณ  ํ• ๋‹น ์‹œ ์‚ฌ์šฉ๋˜๋Š” ํ‚ค๊ฐ€ ๊ธฐ์กด์— ์žˆ๋˜ ํ‚ค๋ผ๋ฉด ํ•ด๋‹น ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๊ณ , ๊ธฐ์กด์— ์—†๋˜ ํ‚ค๋ผ๋ฉด ์ƒˆ๋กœ์šด ๊ฐ’์œผ๋กœ ์ถ”๊ฐ€๋œ๋‹ค.

 

๋”•์…”๋„ˆ๋ฆฌ ํ•จ์ˆ˜

๊ตญ๊ฐ€๋ช…๊ณผ ๊ตญ๊ฐ€ ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ๋ฌถ์–ด ๋ณด์—ฌ์ฃผ๋Š” ์ฝ”๋“œ

>>> 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'])
    
  • ํ‚ค๊ฐ€ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ์ถœ๋ ฅ๋จ
  • ํ‚ค๋งŒ ์ถœ๋ ฅํ•˜๋Š” keys() ํ•จ์ˆ˜
    >>> country_code.keys ()                    # ๋”•์…”๋„ˆ๋ฆฌ์˜ ํ‚ค๋งŒ ์ถœ๋ ฅ
    dict_keys(['America', 'Korea', 'China', 'Japan'])
    
  • ํ‚ค๊ฐ€ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ์ถœ๋ ฅ๋จ
>>> country_code.keys ()                    # ๋”•์…”๋„ˆ๋ฆฌ์˜ ํ‚ค๋งŒ ์ถœ๋ ฅ
dict_keys(['America', 'Korea', 'China', 'Japan'])

๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” values() ํ•จ์ˆ˜

>>> country_code ["German"] = 49        # ๋”•์…”๋„ˆ๋ฆฌ ์ถ”๊ฐ€
>>> country_code
{'America': 1, 'Korea': 82, 'China': 86, 'Japan': 81, 'German': 49}
>>> country_code.values()               # ๋”•์…”๋„ˆ๋ฆฌ์˜ ๊ฐ’๋งŒ ์ถœ๋ ฅ
dict_values([1, 82, 86, 81, 49])

ํ‚ค-๊ฐ’ ์Œ์„ ๋ชจ๋‘ ๋ณด์—ฌ์ฃผ๋Š” items() ํ•จ์ˆ˜

>>> country_code.items ()               # ๋”•์…”๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ
dict_items([('America', 1), ('Korea', 82), ('China', 86), ('Japan', 81), ('German', 49)])

๋”•์…”๋„ˆ๋ฆฌ์™€ for๋ฌธ

>>> 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
Vlaue: 49

if๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ํ‚ค๋‚˜ ๊ฐ’์ด ํ•ด๋‹น ๋ณ€์ˆ˜์— ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ

>>> "Korea" in country_code.keys ()         # ํ‚ค์— "Korea"๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ
True
>>> 82 in country_code.values ()            # ๊ฐ’์— 82๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ
True

 

collections ๋ชจ๋“ˆ

  • ํŒŒ์ด์ฌ์˜ ๋‚ด์žฅ ์ž๋ฃŒ๊ตฌ์กฐ (built-in data structure) ๋ชจ๋“ˆ์ธ collections
  • collections ๋ชจ๋“ˆ์€ ์ด๋ฏธ ์•ž์—์„œ ๋ฐฐ์šด ๋‹ค์–‘ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ธ ๋ฆฌ์ŠคํŠธ, ํŠœํ”Œ, ๋”•์…”๋„ˆ๋ฆฌ ๋“ฑ์„ ํ™•์žฅ ํ•˜์—ฌ ์ œ์ž‘๋œ ํŒŒ์ด์ฌ์˜ ๋‚ด์žฅ ๋ชจ๋“ˆ์ด๋‹ค. ๊ธฐ์กด์— ๋ฐฐ์› ๋˜ ์ž๋ฃŒ๊ตฌ์กฐ๋ณด๋‹ค ํšจ์œจ์ ์ด๊ณ  ํŽธ๋ฆฌํ•˜๋‹ค.
  • collections ๋ชจ๋“ˆ์€ deque, OrderedDict, defaultdict, Counter, namedruple ๋“ฑ์„ ์ œ ๊ณตํ•œ๋‹ค. ๊ฐ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
from collections import deque 
from collections import OrderedDict 
from collections import defaultdict 
from collections import Counter 
from collections import namedtuple

 

deque ๋ชจ๋“ˆ

  • deque ๋ชจ๋“ˆ์€ ์Šคํƒ๊ณผ ํ๋ฅผ ๋ชจ๋‘ ์ง€์›ํ•˜๋Š” ๋ชจ๋“ˆ์ด๋‹ค. deque๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฆฌ์ŠคํŠธ์™€ ๋น„์Šทํ•œ ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด์•ผ ํ•œ๋‹ค.
  • append() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ์กด ๋ฆฌ์ŠคํŠธ์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๊ฐ€ ์ธ๋ฑ์Šค(index) ๋ฒˆํ˜ธ๋ฅผ ๋Š˜๋ฆฌ๋ฉด์„œ ์Œ“์ด๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค.
>>> 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()์„ ์ˆ˜ํ–‰์‹œํ‚ค๋ฉด ์˜ค๋ฅธ์ชฝ ์š”์†Œ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์ถ”์ถœ๋œ๋‹ค. ์ฆ‰, ์Šคํƒ์ฒ˜๋Ÿผ ๋‚˜์ค‘์— ๋„ฃ์€ ๊ฐ’๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์ถ”์ถœ๋˜๋Š” ๊ฒƒ์ด๋‹ค.
>>> deque_list.pop()
4
>>> deque_list.pop()
3
>>> deque_list.pop()
2
>>> deque_list 
deque([0, 1])

deque์—์„œ์˜ ํ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

  • pop(0)์„ ์ž…๋ ฅํ•˜๋ฉด ์‹คํ–‰๋  ๊ฒƒ ๊ฐ™์ง€๋งŒ, deque์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋Œ€์‹  deque๋Š” appendleft( ) ํ•จ์ˆ˜๋กœ ์ƒˆ๋กœ์šด ๊ฐ’์„ ์™ผ์ชฝ๋ถ€ํ„ฐ ์ž…๋ ฅํ•˜๋„๋ก ํ•˜์—ฌ ๋จผ์ € ๋“ค์–ด๊ฐ„ ๊ฐ’๋ถ€ํ„ฐ ์ถœ๋ ฅ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
>>> 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])

deque ๋ชจ๋“ˆ์˜ ์žฅ์ 

  • deque ๋Š” ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ํŠน์„ฑ์„ ์ง€์›
  • ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ์š”์†Œ์˜ ๊ฐ’์„ ํ•œ ์ชฝ์œผ๋กœ ์—ฐ๊ฒฐํ•œ ํ›„, ์š”์†Œ์˜ ๋‹ค์Œ ๊ฐ’์˜ ์ฃผ์†Œ๊ฐ’์„ ์ €์žฅํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค.

  • ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋Š” ์œ„์˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ ๋‹ค์Œ ์š”์†Œ์˜ ์ฃผ์†Œ๊ฐ’์„ ์ €์žฅํ•˜๋ฏ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์›ํ˜•์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, ๋งˆ์ง€๋ง‰ ์š”์†Œ์— ์ฒซ ๋ฒˆ์งธ ๊ฐ’์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅ ์‹œ์ผœ ํ•ด๋‹น ๊ฐ’์„ ์ฐพ์•„๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ์—ฐ๊ฒฐ์‹œํ‚จ๋‹ค.
  • ์ด๋Ÿฌํ•œ ํŠน์ง• ๋•Œ๋ฌธ์— ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๊ฐ€ rotate() ํ•จ์ˆ˜์ด๋‹ค. rotate()๋Š” ๊ธฐ์กด deque์— ์ €์žฅ๋œ ์š”์†Œ๋“ค ๊ฐ’์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ”๊พธ๋Š” ๊ธฐ๋ฒ•์ด๋‹ค.
  • ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋Š” ์–‘์ชฝ ๋์˜ ์š”์†Œ๋“ค์„ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์œ„์˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ ์›ํ˜•์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์ง•์„ ์ด์šฉํ•˜์—ฌ ๊ฐ ์š”์†Œ์˜ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๋ฅผ ํ•˜๋‚˜์”ฉ ์˜ฎ๊ธด๋‹ค๋ฉด ์‹ค์ œ๋กœ ์š”์†Œ๋ฅผ ์˜ฎ๊ธฐ์ง€ ์•Š๋”๋ผ๋„ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.
>>> from collections import deque
>>>
>>> deque_list = deque()
>>> for i in range(5):
        deque_list.appendleft(i)
  • ๊ธฐ์กด ๋ฐ์ดํ„ฐ์— rotate(2) ํ•จ์ˆ˜๋ฅผ ์ˆ˜ํ–‰์‹œํ‚ค๋ฉด 3๊ณผ 4์˜ ๊ฐ’์ด ๋‘ ์นธ์”ฉ ์ด๋™ํ•˜์—ฌ 0๋ฒˆ์งธ, 1๋ฒˆ์งธ ์ธ๋ฑ์Šค๋กœ ์˜ฎ๊ฒจ์ง„ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์‹œ rotated(2)๋ฅผ ์ˆ˜ํ–‰์‹œํ‚ค๋ฉด 1๊ณผ 2๊ฐ€ 0๋ฒˆ์งธ, 1๋ฒˆ์งธ ์ธ๋ฑ์Šค๋กœ ์ด๋™ํ•œ๋‹ค.
>>>
>>> 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])

reserved () ํ•จ์ˆ˜๋กœ ๋ฐ˜๋Œ€๋กœ ๋ฐ์ดํ„ฐ ์ €์žฅ

>>> 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])

์ •๋ฆฌ

  • deque ๋ชจ๋“ˆ์€ ๋ฉ”๋ชจ๋ฆฌ์˜ ํšจ์œจ์  ์‚ฌ์šฉ๊ณผ ๋น ๋ฅธ ์†๋„๋ผ๋Š” ์ธก๋ฉด์—์„œ๋„ ์œ ์šฉํ•˜๋‹ค.
  • ์•ž์—์„œ ์ œ์‹œํ•œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํ•จ์ˆ˜๋Š” ๊ธฐ์กด ๋ฆฌ์ŠคํŠธ์—์„œ๋„ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ deque์˜ ๋ฉ”๋ชจ๋ฆฌ ์ €์žฅ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž๋Š” ์กฐ๊ธˆ ๋” ํšจ์œจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค. ๋Œ€์šฉ๋Ÿ‰์˜ ํ๋‚˜ ์Šคํƒ์„ ์ฒ˜๋ฆฌํ•  ์ผ์ด ์žˆ๋‹ค๋ฉด deque ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•œ๋‹ค.

 

OrderedDict ๋ชจ๋“ˆ

  • OrderedDict ๋ชจ๋“ˆ์€ ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ์ˆœ์„œ๋ฅผ ๊ฐ€์ง„ ๋”•์…”๋„ˆ๋ฆฌ ๊ฐ์ฒด์ด๋‹ค.
  • ๋”•์…”๋„ˆ๋ฆฌ๋Š” ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š” ๊ฐ์ฒด์—ฌ์„œ ๋”•์…”๋„ˆ๋ฆฌ ํŒŒ์ผ์„ ์ €์žฅํ•˜๋ฉด ํ‚ค๋Š” ์ €์žฅ ์ˆœ์„œ์™€ ์ƒ๊ด€์—†์ด ์ €์žฅ๋œ๋‹ค.
d = {}
d['x'] = 100
d['T'] = 500
d['y'] = 200
d['z'] = 300

for k, v in d.items():
    print(k, v)
#์ถœ๋ ฅ ๊ฒฐ

x 100 
l 500 
y 200 
z 300
  • x, l, y, z ์˜ ์ˆœ์„œ๋Œ€๋กœ ํ‚ค๋ฅผ ์ €์žฅํ–ˆ์ง€๋งŒ, ๊ฒฐ๊ณผ๋Š” ์ €์žฅํ•œ ์ˆœ์„œ์™€ ์ƒ๊ด€์—†์ด ๋‹ค์–‘ํ•œ ํ˜•ํƒœ๋กœ ์ถœ๋ ฅ๋œ๋‹ค.
  • ํ•˜์ง€๋งŒ OrderedDict ๋ชจ๋“ˆ์€ ํ‚ค์˜ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•œ๋‹ค. ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ•์€ ์ €์žฅํ•œ ์ˆœ์„œ๋Œ€๋กœ ๊ฒฐ๊ณผ๋ฅผ ํ™”๋ฉด์— ์ถœ๋ ฅ ํ•œ๋‹ค.
from collections import OrderedDict      # OrderedDict ๋ชจ๋“ˆ ์„ ์–ธ

d = OrderedDictO
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
  • ์œ„์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์–ด๋–ค ์ปดํ“จํ„ฐ๋“  ์ƒ๊ด€์—†์ด x, y, z, 1์˜ ์ˆœ์„œ๋Œ€๋กœ ํ‚ค-๊ฐ’์Œ์ด ์ถœ๋ ฅ๋œ๋‹ค.
  • OrderedDict ๋ชจ๋“ˆ์„ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋”•์…”๋„ˆ๋ฆฌ๋กœ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์‹œ ํ‚ค๋‚˜ ๊ฐ’์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•  ๋•Œ์ด๋‹ค.

ex) ํ‚ค๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฃผ๋ฏผ๋“ฑ๋ก ๋ฒˆํ˜ธ๋ฅผ ๋ฒˆํ˜ธ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ•œ ํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ

def sort_by_key(t): 
    return t[0]

from collections import OrderedDict       # 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
  • ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ๋”•์…”๋„ˆ๋ฆฌ์˜ ๊ฐ’์ธ ๋ณ€์ˆ˜ d๋ฅผ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ๋งŒ๋“  ๋‹ค์Œ, sorted() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ ฌํ•œ๋‹ค.
  • sorted(d.items(), key=sort_by_key)์˜ ์ฝ”๋“œ๋งŒ ๋”ฐ๋กœ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ์ฒ˜๋Ÿผ ์ •๋ ฌ๋˜์–ด ์ด์ฐจ์› ํ˜•ํƒœ๋กœ ๊ฐ’์ด ์ถœ๋ ฅ๋œ๋‹ค.

๐Ÿ’ก [(’l’, 500), ('x', 100), (’y’, 200),(’z’, 300)]

  • ์ฆ‰, ๊ธฐ์กด์˜ ๋”•์…”๋„ˆ๋ฆฌ ๋ณ€์ˆ˜๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ์ถ”์ถœํ•˜๊ณ , sorted() ํ•จ์ˆ˜๋กœ ํ‚ค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•œ ํ›„. ๋‹ค์‹œ OrderedDict ๋ชจ๋“ˆ๋กœ ๊ฐ์‹ธ์ฃผ๋Š”(wrapping) ๋ฐฉ์‹์ด๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ธฐ์กด์˜ ๋”•์…”๋„ˆ๋ฆฌ๋‚˜ ๋ฆฌ์Šค ํŠธ์˜ ์ˆœ์„œ๋ฅผ ์ง€ํ‚ค๋ฉด์„œ ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌํ• ์ˆ˜ ์žˆ๋‹ค.
  • ๋งŒ์•ฝ, ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค๋ฉด ์œ„์˜ ์ฝ”๋“œ์˜ 1ํ–‰๊ณผ 2ํ–‰์„ ๋‹ค์Œ์ฒ˜๋Ÿผ ๋ฐ”๊พธ๋ฉด ๋œ๋‹ค. ์ฐธ๊ณ ๋กœ t[0]๊ณผ t[1]์€ ์œ„ ๋ฆฌ์ŠคํŠธ ์•ˆ์˜ ํŠœํ”Œ ๊ฐ’ ์ค‘ 0๋ฒˆ์งธ ์ธ๋ฑ์Šค(l, x, y, z)์™€ 1๋ฒˆ์งธ ์ธ๋ฑ์Šค(500, 100, 200, 300)๋ฅผ ๋œปํ•œ๋‹ค.
def sort_by_value(t): 
    return t[1]

 

defaultdict ๋ชจ๋“ˆ

  • defaultdict ๋ชจ๋“ˆ์€ ๋”•์…”๋„ˆ๋ฆฌ์˜ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํ‚ค์— ๊ธฐ๋ณธ๊ฐ’์„ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
  • ์ƒˆ๋กœ์šด ํ‚ค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ๋ณ„๋‹ค๋ฅธ ์กฐ์น˜ ์—†์ด ์ƒˆ๋กœ์šด ๊ฐ’์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
d = dict()
print(d["first"])
Traceback (most recent call last):
    File "defauUdictl.py", line 2, in <module>
        print(d["first"]) 
KeyError: 'first'
  • ์‹ค์ œ ๋”•์…”๋„ˆ๋ฆฌ์—์„œ๋Š” ์œ„์˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ํ•ด๋‹น ํ‚ค์˜ ๊ฐ’์„ ํ˜ธ์ถœํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ฆ‰, ์ฝ”๋“œ์—์„œ first์˜ ํ‚ค ๊ฐ’์„ ๋ณ„๋„๋กœ ์ƒ์„ฑํ•˜์ง€ ์•Š์€ ์ฑ„ ๋ฐ”๋กœ ํ˜ธ์ถœํ•˜์—ฌ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์ด๋‹ค.

defaultdict ๋ชจ๋“ˆ ์‚ฌ์šฉ

from collections import defaultdict

d = defaultdict(lambda: 0)          # Default ๊ฐ’์„ 0 ์œผ๋กœ ์„ค์ •
print(d["first"])
#์ถœ๋ ฅ ๊ฒฐ๊ณผ

0
  • ์œ„์˜ ์ฝ”๋“œ์—์„œ์˜ ํ•ต์‹ฌ์€ 3ํ–‰์˜ d=defaultdict(lambda: 0)์ด๋‹ค.
  • defaultdict ๋ชจ๋“ˆ์„ ์„ ์–ธํ•˜๋ฉด์„œ ๋™์‹œ์— ์ดˆ๊นƒ๊ฐ’์„ 0์œผ๋กœ ์„ค์ •ํ•œ ๊ฒƒ์ด๋‹ค.lambda() ํ•จ์ˆ˜๋ฅผ ‘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.itemsO)
[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
#์ถœ๋ ฅ ๊ฒฐ๊ณผ

dict_items([('yellow', [1, 3]), ('blue', [2, 4]), ('red', [1])])
  • ์ด์™ธ์—๋„ defaultdict์˜ ์ดˆ๊นƒ๊ฐ’์€ ์ฒ˜๋Ÿผ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ๋„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • s ๋ณ€์ˆ˜์— ํŠœํ”Œ ๋ฐ์ดํ„ฐ๋“ค์„ ์ด์ฐจ์› ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ์ €์žฅํ•˜์˜€๋‹ค.
  • ๋˜ํ•œ 4ํ–‰์˜ d = defaultdict(list) ์ฝ”๋“œ๋Š” ๋ณ€์ˆ˜ d๋ฅผ defaultdict ํƒ€์ž…์œผ๋กœ ์„ ์–ธํ•˜๋ฉด์„œ ์ดˆ๊นƒ๊ฐ’์„ ๋ฆฌ์ŠคํŠธ๋กœ ์„ ์–ธํ•˜์˜€๋‹ค. 5ํ–‰๋ถ€ํ„ฐ๋Š” for๋ฌธ์ด ์ž‘๋™ํ•˜๋ฉด์„œ ๋ณ€์ˆ˜ s์˜ ๊ฐ ์š”์†Œ์—์„œ ํ‚ค ๊ฐ’๊ณผ ์‹ค์ œ ๊ฐ’์„ ์ถ”์ถœํ•˜์—ฌ ๋ณ€์ˆ˜ ์‹œ์— ์ถ”๊ฐ€ํ•˜์˜€๋‹ค.
  • ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋ณ€์ˆ˜ d๋Š” deafultdict ํƒ€์ž…์ด๋ฉด์„œ list๊ฐ€ ์ดˆ๊นƒ๊ฐ’์œผ๋กœ ์„ ์–ธ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ์šด ํ‚ค ๊ฐ’์ด ์—†๋”๋ผ๋„ ๋ณ„๋„๋กœ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋Š” ์ผ๋ฐ˜์ ์ธ ‘diet’์— ๋น„ํ•ด ์ฝ”๋“œ ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์–ด defaultdict ํƒ€์ž…์˜ ๊ฐ€์žฅ ํฐ ์žฅ์ ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Counter ๋ชจ๋“ˆ

  • Counter ๋ชจ๋“ˆ์€ ์‹œํ€€์Šค ์ž๋ฃŒํ˜•์˜ ๋ฐ์ดํ„ฐ ๊ฐ’์˜ ๊ฐœ์ˆ˜๋ฅผ ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ฆ‰, ๋ฆฌ์ŠคํŠธ๋‚˜ ๋ฌธ์ž์—ด๊ณผ ๊ฐ™์€ ์‹œํ€€์Šค ์ž๋ฃŒํ˜•์— ์ €์žฅ๋œ ์š”์†Œ ์ค‘์—์„œ ๊ฐ™์€ ๊ฐ’์ด ๋ช‡ ๊ฐœ ์žˆ๋Š”์ง€ ๊ทธ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
>>> 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
  • ์œ„ ์ฝ”๋“œ์—์„œ๋Š” ๊ธฐ์กด ๋ฌธ์ž์—ด๊ฐ’์ธ ‘gallahad’๋ฅผ ๋ฆฌ์ŠคํŠธํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•œ ํ›„, text ๋ณ€์ˆ˜์— ์ €์žฅํ•˜์˜€๋‹ค. ์‚ฌ์‹ค ‘gallahad’ ์ž์ฒด๋„ ์‹œํ€€์Šค ์ž๋ฃŒํ˜•์ธ ๋ฌธ์ž์—ด์ด๋ฏ€๋กœ ๊ตณ์ด ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•  ํ•„์š”๋Š” ์—†์ง€๋งŒ ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•ด ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ์ €์žฅํ•˜์˜€๋‹ค.
  • c ๋ผ๋Š” Counter ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด์„œ text ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊นƒ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜์˜€๋‹ค. ์ด๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ์œ„ ๊ฒฐ๊ณผ์ฒ˜๋Ÿผ ๊ฐ ์•ŒํŒŒ๋ฒณ์ด ๋ช‡ ๊ฐœ์”ฉ ์žˆ๋Š”์ง€ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • c["a"]์ฒ˜๋Ÿผ ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ์˜ ๋ฌธ๋ฒ•์„ ๊ทธ๋Œ€๋กœ ์ด์šฉํ•ด ํŠน์ • ํ…์ŠคํŠธ์˜ ๊ฐœ์ˆ˜๋„ ๋ฐ”๋กœ ์ถœ๋ ฅ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Counter๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ฐ ๋ฌธ์ž์˜ ๊ฐœ์ˆ˜ ์„ธ๋Š” ์ž‘์—…์„ ๋งค์šฐ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ์ •๋ ฌ๊นŒ์ง€ ๋๋‚ธ ๊ฒฐ๊ณผ๋ฌผ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ด์ „ Lab์—์„œ ์ˆ˜ํ–‰ํ•œ ์ž‘์—… ์„ ๋‹จ ํ•œ ์ค„์˜ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•˜์˜€๋‹ค.
>>> text = 'A press release is the quickest and easiest way to get free 
publicity. If well written, a press release can result in multiple published 
articles about your firm and its products. And that can mean new prospects 
contacting you asking you to sell to them. •••.'.lower().split()
>>> Counter(text)
Counter({'and': 3, 'to': 3, 'can': 2, 'press': 2, 'release': 2, 'you': 2, 'a': 2, 'sell': 1,
'about': 1, 'free': 1, 'firm': 1, 'quickest': 1, 'products.': 1, 'written,': 1, 'them.': 1,
'•••.': 1, 'articles': 1, 'published': 1, 'mean': 1, 'that': 1, 'prospects': 1, 'its': 1, 
'multiple': 1, 'if': 1, 'easiest': 1, 'publicity.': 1, 'way': 1, 'new': 1, 'result': 1,
'the': 1, 'your': 1, 'well': 1, 'is': 1, 'asking': 1, 'in': 1, 'contacting': 1, 'get': 1})
  • Counter๋Š” ๋‹จ์ˆœํžˆ ์‹œํ€€์Šค ์ž๋ฃŒํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์„ธ๋Š” ์—ญํ• ๋„ ํ•˜์ง€๋งŒ. ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋‚˜ ํ‚ค์›Œ๋“œ ํ˜•ํƒœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Counter๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋จผ์ € ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ Counter ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด, {'red': 4, 'blue': 2}๋ผ๋Š” ์ดˆ๊นƒ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ Counter๋ฅผ ์ƒ์„ฑํ•˜์˜€๋‹ค. ๋˜ํ•œ 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’]

ํ‚ค์›Œ๋“œ ํ˜•ํƒœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Counter๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•

>>> 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']
  • ๋งค๊ฐœ ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์„ ํ‚ค (key) ๋กœ , ์‹ค์ œ ๊ฐ’์„ ๊ฐ’ (vlaue)์œผ๋กœ ํ•˜์—ฌ Counter ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ๋ณธ ์‚ฌ์น™์—ฐ์‚ฐ ์ง€์›

>>> 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})
  • ํŒŒ์ด์ฌ์—์„œ ์ง€์›ํ•˜๋Š” ๊ธฐ๋ณธ ์—ฐ์‚ฐ์ธ ๋ง์…ˆ, ๋บ„์…ˆ, ๋…ผ๋ฆฌ ์—ฐ์‚ฐ ๋“ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์œ„ ์ฝ”๋“œ๋Š” 2๊ฐœ์˜ Counter c์™€ d๋ฅผ ์ƒ์„ฑํ•œ ํ›„ c.subtract(d)๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ไป์— ๋Œ€ํ•œ d์˜ ์ฐจ๋ฅผ ๊ตฌํ•œ ๊ฒฐ๊ณผ์ด๋‹ค. c์— ์žˆ๋Š” ๊ฐ ์š”์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ d์— ์žˆ๋Š” ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋งŒํผ ๊ฐ์†Œํ•˜์˜€๋‹ค.

๋ง์…ˆ, AND, OR ์—ฐ์‚ฐ ์ง€์›

>>> from collections import Counter 
>>>
>>> c = Counter(a = 4, b = 2, c = 0, d = -2) 
>>> d =Counter(a =1, b =2, c =3, d =4) 
>>> 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, 'd': 4, 'c': 3, 'b': 2})
  • ๅ ๊ธฐํ˜ธ๋Š” ๋‘ Counter ๊ฐ์ฒด์— ์žˆ๋Š” ๊ฐ ์š”์†Œ๋ฅผ ๋”ํ•œ ๊ฒƒ์ด๊ณ , & ๊ธฐํ˜ธ๋Š” ๋‘ ๊ฐ์ฒด์— ๊ฐ™์€ ๊ฐ’์ด ์žˆ์„๋•Œ, ์ฆ‰ ๊ต์ง‘ํ•ฉ์˜ ๊ฒฝ์šฐ์—๋งŒ ์ถœ๋ ฅํ•˜์˜€๋‹ค.
  • ๋ฐ˜๋Œ€๋กœ | ๊ธฐํ˜ธ๋Š”๋‘ Counter ๊ฐ์ฒด์—์„œ ํ•˜๋‚˜๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋ฉด, ๊ทธ๋ฆฌ๊ณ  ์ข€ ๋” ํฐ ๊ฐ’์ด ์žˆ๋‹ค๋ฉด ๊ทธ ๊ฐ’์œผ๋กœ ํ•ฉ์ง‘ํ•ฉ์„ ์ ์šฉํ•˜์˜€๋‹ค.

 

namedtuple ๋ชจ๋“ˆ

  • namedtuple ๋ชจ๋“ˆ์€ ํŠœํ”Œ์˜ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ฒด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
  • ์–ด๋–ค ํŠน์ • ๋ฐ์ดํ„ฐ๋Š” ์ €๋งˆ๋‹ค ๊ทœ์ •๋œ ์ •๋ณด๊ฐ€ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ•™์ƒ์ด๋ผ๋Š” ์ •๋ณด๋ฅผ ์ปดํ“จํ„ฐ์— ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ๋ณ€์ˆ˜(ํ•™๋ฒˆ, ์ด๋ฆ„, ํ•™๋…„, ํ•™๊ณผ ๋“ฑ)๊ฐ€ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ •๋ณด๋ฅผ ํ•˜๋‚˜์˜ ๋ฆฌ์ŠคํŠธ๋กœ ๋งŒ๋“ค์–ด ์ด์ฐจ์› ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑํ•ด๋„ ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋•Œ, ๋‚˜์ค‘์—๋ผ๋„ ์ด ๋ฆฌ์ŠคํŠธ๋ฅผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋Ÿฌํ•œ ์ •๋ณด๋ฅผ ํ•˜๋‚˜์˜ ํŠœํ”Œ ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑํ•ด ์†์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ namedtuple์ด๋‹ค.
  • C ์–ธ์–ด์—์„œ๋Š” struct๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค.
>>> from collections import namedtuple 
>>>
>>> Point = namedtuple('Point1', ['x', 'y']) 
>>> p = Point(ll, y=22)
>>> p
Point(x=ll, y=22)
>>> p.x, p.y
(11, 22)
>>> print(p[0] + p[l]) 
33
  • ์œ„ ์ฝ”๋“œ๋Š” ์ขŒํ‘œ ํ‰๋ฉด์—์„œ์˜ ์ ์˜ ์œ„์น˜๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด Point๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๊ฐ’์„ ์ €์žฅํ•œ namedtuple ์ด๋‹ค. Point = namedtuple(’Point', ['x', 'y']) ์ฝ”๋“œ์—์„œ Point ๊ฐ์ฒด์˜ ์ด ๋ฆ„์€ Point๋กœ ์ง€์ •ํ•˜๊ณ , ์ €์žฅ๋˜๋Š” ์š”์†Œ์˜ ์ด๋ฆ„์„ x์™€ y๋กœ ์ง€์ •ํ•˜์˜€๋‹ค.
  • ๋‹ค์Œ์œผ๋กœ Point ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ƒ์„ฑ์€ ํ•จ์ˆ˜์™€ ๋น„์Šทํ•˜๋‹ค. Point ๊ฐ์ฒด์—์„œ x์™€ y๋ฅผ ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ  ๊ฐ๊ฐ p = Pointd(11, y=22)์—์„œ ์ฐจ๋ก€๋กœ ์‚ฌ์šฉ๋˜์–ด ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž…๋ ฅ๋œ ๊ฐ’์€ p ๋ณ€์ˆ˜์— ์ €์žฅํ•œ๋‹ค.
  • ์—ฌ๊ธฐ์„œ ์ฃผ๋ชฉํ•  ๊ฒƒ์€ p ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๊ฐ’์„ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ฒซ์งธ, ์š”์†Œ์˜ ์ด๋ฆ„์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. p.x, p.y์™€ ๊ฐ™์ด ๋ณ€์ˆ˜๋ช…๊ณผ ์š”์†Œ์˜ ์ด๋ฆ„์„ ์ (.) ์œผ๋กœ ์—ฐ๊ฒฐํ•˜๋ฉด ํ•ด๋‹น ๊ฐ’์„ ๋ถˆ๋Ÿฌ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
  • ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ธ๋ฑ์Šค๋Š” ์ด๋ฆ„์ด ๋“ค์–ด๊ฐ„ ์ˆœ์„œ๋Œ€๋กœ ๊ฐ’์ด ์ €์žฅ๋˜์–ด ์žˆ๋‹ค. ์ฆ‰, p[0]์€ Point ๊ฐ์ฒด์—์„œ ๋จผ์ € ์ €์žฅ๋˜์–ด์•ผ ํ•˜๋Š” x๊ฐ’์— ๋Œ€์‘๋œ๋‹ค. p[1]์€ Point ๊ฐ์ฒด์—์„œ ๋‘ ๋ฒˆ์งธ๋กœ ์ €์žฅ๋˜์–ด์•ผ ํ•˜๋Š” y๊ฐ’์— ๋Œ€์‘๋œ๋‹ค. ์ด๋กœ ์ธํ•ด ๋ง์…ˆ ์—ฐ์‚ฐ์ด๋‚˜ ์–ธํŒจํ‚น (unpacking) ์—ฐ์‚ฐ ๋“ฑ์ด ๋ชจ๋‘ ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

 

์‹ค์Šต

ํ…์ŠคํŠธ ๋งˆ์ด๋‹ ํ”„๋กœ๊ทธ๋žจ

  • ์•ž์—์„œ ๋ฐฐ์šด ๋”•์…”๋„ˆ๋ฆฌ์™€ collections ๋ชจ๋“ˆ์„ ์ด์šฉํ•˜์—ฌ ํ…์ŠคํŠธ ๋งˆ์ด๋‹ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด๋ณด ์ž. ํ…์ŠคํŠธ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ์˜๋ฏธ ์žˆ๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•˜๋Š” ๊ณผ์ •์„ ํ…์ŠคํŠธ ๋งˆ์ด๋‹ (text mining)์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํ…์ŠคํŠธ ๋งˆ์ด๋‹์„ ํ•  ๋•Œ ๊ฐ ๋ฌธ์žฅ์—์„œ ๋‹จ์–ด๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋งŽ์ด ์ถœํ˜„ํ•˜๋Š”์ง€ ๋ถ„์„ํ•œ๋‹ค. ์ด๋•Œ, defaultdict ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์žฅ์— ์žˆ๋Š” ๋‹จ์–ด์˜ ๊ฐœ์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹ค์Œ ๋ฌธ์žฅ์— ์žˆ๋Š” ๋‹จ์–ด์˜ ๊ฐœ์ˆ˜๋ฅผ ํŒŒ์•…ํ•ด๋ณธ๋‹ค.

๐Ÿ’ก A press release is the quickest and easiest way to get free publicity. If well written, a press release can result in multiple published articles about your firm and its products. And that can mean new prospects contacting you asking you to sell to them. •••

 

  • ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋Š” ๊ทœ์น™

๐Ÿ’ก 1. ๋ฌธ์žฅ์˜ ๋‹จ์–ด ๊ฐœ์ˆ˜๋ฅผ ํŒŒ์•…ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. 2. defaultdict ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•œ๋‹ค. 3. ๋‹จ์–ด์˜ ์ถœํ˜„ ํšŸ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด OrderedDict ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•œ๋‹ค.

  • ์‹คํ–‰ ๊ฒฐ๊ณผ
and 3
to 3
a 2
press 2 
release 2
...
(์ƒ๋žต)
...
contacting 1 
asking 1 
sell 1
them. 1
•••. 1

์ •๋‹ต

text = """A press release is the quickest and easiest way to get free 
publicity. If well written, a press release can result in multiple 
published articles about your firm and its products. And that can mean new 
prospects contacting you asking you to sell to them. •••.’"",.lower().split()

from collections import defaultdict

word_count = defaultdict(lambda: 0)    # Default ๊ฐ’์„ 0์œผ๋กœ ์„ค์ •
for word in text:
    word_count[word] += 1

from collections import OrderedDict
for i, v in OrderedDict(sorted(word_count.items(), key=lambda t: t[1], 
reverse=True)).items():
    print(i, v)
  • 1ํ–‰์€ text ๋ณ€์ˆ˜์— ์›ํ•˜๋Š” ๋ฌธ์žฅ์„ ๋„ฃ๊ณ , ์ด๋ฅผ ์†Œ๋ฌธ์ž๋กœ ๋ฐ”๊พผ ํ›„ ๋‹จ์–ด ๋‹จ์œ„๋กœ ์ž๋ฅด๋Š” ์ฝ”๋“œ์ด๋‹ค. ์ด๋ฅผ ์œ„ํ•ด lower ()์™€ split() ํ•จ์ˆ˜๋ฅผ ์—ฐ์†์œผ๋กœ ์‚ฌ์šฉํ•˜์˜€๋‹ค. ์ด ์ฝ”๋“œ์˜ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํŒŒ์ด์ฌ ์…ธ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋ฉด ๋ฆฌ์ŠคํŠธ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
>>> text = 'A press release is the quickest and easiest way to get free 
publicity. If weU written, a press release can result in multiple published 
articles about your firm and its products. And that can mean new prospects 
contacting you asking you to sell to them. lower().split()
>>> print(text)
['a', 'press'j 'release', 'is', 'the', 'quickest', 'and', 'easiest', 'way', 'to',
'get', 'free', 'publicity', 'if', 'well', 'written,', 'a', 'press', 'release', 
'can', 'result', 'in', 'multiple', 'published', 'articles', 'about', 'your', 
'firm', 'and', 'its', 'products.', 'and', 'that', 'can', 'mean', 'new', 'prospects',
'contacting', 'you', 'asking', 'you', 'to', 'sell', 'to', 'them.', '•••.']
  • ๋‹ค์Œ์œผ๋กœ ์ด ๋ฆฌ์ŠคํŠธ์—์„œ ๊ฐ๊ฐ์˜ ๋‹จ์–ด๊ฐ€ ๋ช‡ ๊ฐœ ์žˆ๋Š”์ง€ ์นด์šดํŠธํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. 3ใ€œ7ํ–‰ ์„ ๋ณด๋ฉด defaultdict ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋”•์…”๋„ˆ๋ฆฌ์˜ ํ‚ค๊ฐ’์„ ๋‹จ์–ด๊ฐ€ ์ถœํ˜„ํ•  ๋•Œ๋งˆ๋‹ค word.count [word] += 1์„ ํ†ตํ•ด ๊ทธ ์ˆ˜๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ์žˆ๋‹ค.
  • ๋‹ค์Œ์œผ๋กœ ๋‹จ์–ด์˜ ์ถœํ˜„ ํšŸ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๋œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ๋‹ค๋ฉด. 9ใ€œ11ํ–‰๊ณผ ๊ฐ™์ด OrderedDict ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค.
  • ์ด ์ฝ”๋“œ๋Š” ์ดํ›„์— ๋ฐฐ์šธ ํ…์ŠคํŠธ ๋ถ„์„์—์„œ ๋ฒกํ„ฐ ์ŠคํŽ˜์ด์Šค ๋ชจ๋ธ(vector space model)์„ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ๋งค์šฐ ์ค‘์š”ํ•œ ์ฝ”๋“œ์ด๋‹ค. ํŒŒ์ด์ฌ์˜ ๋‹ค์–‘ํ•œ ๋‚ด์žฅ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ํšจ์œจ์ ์œผ๋กœ ํ…์ŠคํŠธ๋ฅผ ๋ถ„์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ดํ›„์— ๋‹ค์‹œ ๋ฐฐ์šฐ๋„๋ก ํ•˜๊ฒ ๋‹ค.

[์ฐธ๊ณ ]

๋ฌธ์žฅ์„ ๋ชจ๋‘ ์†Œ๋ฌธ์ž๋กœ ๋ฐ”๊พธ๋Š” ์ด์œ ๋Š” ๋ณดํ†ต ์˜์–ด ๋ฌธ์žฅ์˜ ์ฒซ ๊ธ€์ž๊ฐ€ ๋Œ€๋ฌธ์ž์ผ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋ฅผ ๋Œ€๋น„ํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“  ํ…์ŠคํŠธ๋ฅผ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. ๋งŒ์•ฝ ํ…์ŠคํŠธ์˜ ๋Œ€, ์†Œ๋ฌธ์ž ๊ตฌ๋ถ„์ด ์ค‘์š”ํ•˜๋‹ค๋ฉด ์ด๋ฅผ ๊ทธ๋Œ€๋กœ ๋†”๋‘๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.