๐Ÿ“–Counter

์•„์ดํ…œ์— ๋Œ€ํ•œ ๊ฐœ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•ด ๋”•์…”๋„ˆ๋ฆฌ๋กœ ๋ฆฌํ„ดํ•˜๋Š” ๊ฐ์ฒด

from collections import Counter
nums = [1, 1, 2, 3, 4, 4]
 
counter = Counter(nums) # Counter({1: 2, 4: 2, 2: 1, 3: 1})
  • ์—†๋Š” ๊ฐ’์— ์ ‘๊ทผํ•ด๋„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ณ  0์„ return
  • Counter ๊ฐ์ฒด๋Š” ๋”•์…”๋„ˆ๋ฆฌ๋กœ ๋ฆฌํ„ดํ•˜๋ฏ€๋กœ ๋”•์…”๋„ˆ๋ฆฌ์ฒ˜๋Ÿผ ์“ธ ์ˆ˜ ์žˆ์Œ

Example

  1. counter[key] : key๋กœ ๊ฐ’ ์ฐพ๊ธฐ
  2. counter[key] += v : key์— ํ•ด๋‹นํ•˜๋Š” v ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋ฐ”๊พธ๊ธฐ
  3. key in counter : in ํ‚ค์›Œ๋“œ ์‚ฌ์šฉํ•ด key๊ฐ€ Counter์— ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ

๐Ÿ“–Counter ํ•จ์ˆ˜

๐Ÿ“Žmost_common(n)

๊ฐ€์žฅ ๋นˆ๋„ ์ˆ˜๊ฐ€ ๋†’์€ ์š”์†Œ๋ฅผ ์ถ”์ถœํ•˜๋Š” ํ•จ์ˆ˜

from collections import Counter
nums = [1, 1, 2]
 
counter = Counter(nums)
counter.most_common(1) # [(1, 2)]
  • n์„ ์ƒ๋žตํ•  ์‹œ ๋ชจ๋“  ์š”์†Œ return
  • ๋ฆฌ์ŠคํŠธ ์•ˆ์— ํŠœํ”Œ ํ˜•์‹[(v1, cnt1), (v2, cnt2)]์œผ๋กœ returnํ•จ

๐Ÿ“Želements()

์นด์šดํŠธ ๋œ ์ˆซ์ž๋งŒํผ์˜ ์š”์†Œ๋ฅผ returnํ•ด์ฃผ๋Š” ํ•จ์ˆ˜

from collections import Counter
nums = [1, 1, 2]
 
counter = Counter(nums)
 
result = list(counter.elements()) # [1, 1, 2]
  • ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ ํ›„ list๋กœ typecastํ•ด์„œ ์‚ฌ์šฉ (๊ทธ๋ƒฅ Counter ๊ฐ์ฒด๋ฅผ list๋กœ typecastํ•˜๋ฉด cnt>1์ธ ์š”์†Œ๋Š” ํ•˜๋‚˜๋งŒ ๋œธ)

๐Ÿ“Žsubtract()

์š”์†Œ๋ฅผ ๋นผ์ฃผ๋Š” ํ•จ์ˆ˜

from collections import Counter
list1, list2 = [1, 2, 3], [1, 1, 2]
 
counter1, counter2 = Counter(list1), Counter(list2)
 
counter1.subtract(counter2) # Counter({3: 1, 2: 0, 1: -1})
  • counter1์—์„œ counter2์˜ element๋ฅผ ๋บ€ ๊ฒƒ์ด counter1
  • ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ์ˆ˜ํ–‰ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ์Œ์ˆ˜๋ผ๋ฉด ์Œ์ˆ˜ ๊ฐ’ ๋ฐ˜ํ™˜ (์—ฐ์‚ฐ์—์„œ ์ œ์™ธ๋˜์ง€ ์•Š์Œ)

๐Ÿ“–์‚ฐ์ˆ  ์—ฐ์‚ฐ

๐Ÿ“Ž๋ง์…ˆ ์—ฐ์‚ฐ

from collections import Counter
list1, list2 = [1, 2, 3], [1, 1, 2]
 
counter1, counter2 = Counter(list1), Counter(list2)
 
counter1 + counter2 # Counter({1: 3, 2: 2, 3: 1})

๐Ÿ“Ž๋บ„์…ˆ ์—ฐ์‚ฐ

from collections import Counter
list1, list2 = [1, 1, 3], [1, 3, 4]
counter1, counter2 = Counter(list1), Counter(list2)
 
counter1 - counter2 # Counter({1: 1})
  • ๊ฒฐ๊ณผ๊ฐ’์ด ์–‘์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ์ถœ๋ ฅํ•˜์ง€ ์•Š์Œ (0, ์Œ์ˆ˜)

๐Ÿ“–์ง‘ํ•ฉ ์—ฐ์‚ฐ

๐Ÿ“ŽCounter1 | Counter2

ํ•ฉ์ง‘ํ•ฉ์„ ๊ตฌํ•˜๋Š” ์—ฐ์‚ฐ

from collections import Counter
list1, list2 = [1, 2, 3], [1, 1, 2]
counter1, counter2 = Counter(list1), Counter(list2)
 
counter1 | counter2 # Counter({1: 2, 2: 1, 3: 1})

๐Ÿ“ŽCounter1 & Counter2

๊ต์ง‘ํ•ฉ์„ ๊ตฌํ•˜๋Š” ์—ฐ์‚ฐ

from collections import Counter
list1, list2 = [1, 2, 3], [1, 1, 2]
counter1, counter2 = Counter(list1), Counter(list2)
 
counter1 & counter2 # Counter({1: 1, 2: 1})