Backend/🐍 Python

졜근 파이썬 PS ν•˜λ©΄μ„œ 배운 것

Hugehoo 2022. 5. 5. 22:52

dict 의 fromkeys() λ©”μ„œλ“œ

- λ”•μ…”λ„ˆλ¦¬ 생성 μ‹œ, 이미 key 값이 정해진 경우 νŽΈλ¦¬ν•˜κ²Œ λ”•μ…”λ„ˆλ¦¬λ₯Ό 생성할 수 μžˆλ‹€.

- seq : λ”•μ…”λ„ˆλ¦¬μ˜ key 값이 될 iterable 둜, 즉 dictionary 의 key λͺ©λ‘μ΄λ‹€.

- value : seq 의 각 key 에 할당될 value (κ°’) 의미

# μ •μ˜
@staticmethod # known case
def fromkeys(*args, **kwargs): # real signature unknown
    """ Create a new dictionary with keys from iterable and values set to value. """
    pass
    
    
# μ‚¬μš©λ²•    
value = 0
seq = [1, 2, 3]

dictionary = dict.fromkeys(seq, value)
>>> {1 : 0, 2 : 0, 3 : 0}

- λ°±μ€€μ˜ 경우 input κ°’μœΌλ‘œ λ”•μ…”λ„ˆλ¦¬λ₯Ό λ§Œλ“€ λ•Œκ°€ μžˆλŠ”λ°, 이럴 경우 seq μžλ¦¬μ— input() 을 λ„£μ–΄μ£Όλ©΄ μ†μ‰½κ²Œ λ”•μ…”λ„ˆλ¦¬λ₯Ό 생성할 수 μžˆλ‹€.

 

bisect.bisect_left(), bisect_right()

// μ •μ˜
bisect_left(a, x, lo=0, hi=len(a), *, key=None)


// μ‚¬μš©μ‹œ
find = bisect_left(list, value)

list λΌλŠ” μ •λ ¬λœ 배열에, μ΄λΆ„νƒμƒ‰μœΌλ‘œ value λ₯Ό μ‚½μž…ν•  인덱슀λ₯Ό λ°˜ν™˜(= find)ν•œλ‹€.

left κ°€ μ ‘λ―Έμ‚¬λ‘œ 뢙은 μ΄μœ λŠ” μ™Όμͺ½ 인덱슀λ₯Ό κ΅¬ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

from bisect import bisect_left, bisect_right

arr = [0, 1, 2, 3, 4]
value = 2

left = bisect_left(arr, value)
right = bisect_right(arr, value)

"""

left : 2
right : 3

"""

μ΄λΆ„νƒμƒ‰μœΌλ‘œ arr μ—μ„œ 2 λ₯Ό 찾으면, 2번째 μΈλ±μŠ€μ—μ„œ 찾을 수 μžˆλ‹€. 

bisect_left : ν•΄λ‹Ή κ°’(=2) 이 이미 arr 에 μžˆλŠ” 경우, value 의 μ‚½μž… μœ„μΉ˜λŠ” κΈ°μ‘΄ ν•­λͺ©μ˜ μ™Όμͺ½μ΄ λœλ‹€.

bisect_right : ν•΄λ‹Ή κ°’μ˜ 였λ₯Έμͺ½ μΈλ±μŠ€μ— μ‚½μž…ν•˜λ―€λ‘œ, 3번째 μΈλ±μŠ€κ°€ find 둜 λ°˜ν™˜ λœλ‹€.