λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Language/Python

[Python]파이썬 μ»¬λ ‰μ…˜ μžλ£Œν˜•: λ”•μ…”λ„ˆλ¦¬μ™€ set의 ν™œμš©λ²•κ³Ό νŠΉμ§•

by YJ Dev 2024. 3. 23.
728x90
λ°˜μ‘ν˜•
SMALL

λ”•μ…”λ„ˆλ¦¬(dictionary)와 집합(set)은 νŒŒμ΄μ¬μ—μ„œ μ‚¬μš©λ˜λŠ” μ»¬λ ‰μ…˜ μžλ£Œν˜•μœΌλ‘œ, 각각 ν‚€-κ°’ 쌍과 κ³ μœ ν•œ κ°’λ“€μ˜ λͺ¨μŒμ„ μ €μž₯ν•©λ‹ˆλ‹€. 이번 κΈ€μ—μ„œλŠ” λ”•μ…”λ„ˆλ¦¬μ™€ 집합에 λŒ€ν•΄ μ•Œμ•„λ³΄κ³  python μ»¬λ ‰μ…˜ μžλ£Œν˜•μ„ 비ꡐ해 λ³΄κ² μŠ΅λ‹ˆλ‹€.

λ”•μ…”λ„ˆλ¦¬


μ—¬λŸ¬ μš”μ†Œλ₯Ό 담을 수 μžˆλŠ” μ»¬λ ‰μ…˜ μžλ£Œν˜•μ€ mutable(κ°€λ³€)κ³Ό immutable(λΆˆλ³€)의 νŠΉμ§•μ„ 가지고 μžˆμŠ΅λ‹ˆλ‹€.
κ°€λ³€ μžλ£Œν˜•μ€ 값을 μˆ˜μ •, μΆ”κ°€, μ‚­μ œν•  수 있으며 데이터λ₯Ό λ™μ μœΌλ‘œ μˆ˜μ •, κ΄€λ¦¬ν•˜κΈ°μ— μœ μš©ν•˜λ©° λΆˆλ³€ μžλ£Œν˜•μ€ 값을 ν•œ 번 μƒμ„±ν•œ ν›„μ—λŠ” 변경이 λΆˆκ°€λŠ₯ν•˜μ—¬ λ°μ΄ν„°μ˜ λΆˆλ³€μ„±μ„ 보μž₯ν•©λ‹ˆλ‹€.
μ§€λ‚œ ν¬μŠ€νŒ…μ—μ„œλŠ” mutable ν•œ 성격을 가진 list와 immutable ν•œ tuple에 λŒ€ν•΄ μ•Œμ•„λ³΄μ•˜λŠ”λ°μš”!

" "

[파이썬]πŸμ»¬λ ‰μ…˜ μžλ£Œν˜•_list와 tuple

1. μ»¬λ ‰μ…˜ μžλ£Œν˜•μ΄λž€β“ 2. listπŸ“‘ 3. tupleπŸ“Œ 4. list와 tuple λΉ„κ΅πŸ†š 5. ν•΅μ‹¬λ‚΄μš©πŸ‘€ λͺ¨λ“  λ°μ΄ν„°λŠ” μœ ν˜•μ΄ μžˆμŠ΅λ‹ˆλ‹€. μœ ν˜•μ€ 크게 κΈ°λ³Έ μžλ£Œν˜•κ³Ό μ»¬λ ‰μ…˜ μžλ£Œν˜•μœΌλ‘œ λ‚˜λ‰©λ‹ˆλ‹€. κΈ°λ³Έ μžλ£Œν˜•μ€ μˆ«μžν˜•

creativevista.tistory.com


μ˜€λŠ˜μ€ list와 같이 mutableν•œ 성격을 가진 λ”•μ…”λ„ˆλ¦¬μ™€ μ„ΈνŠΈμ— λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€πŸ˜Š


1. dictionaryπŸ“š

λ¦¬μŠ€νŠΈκ°€ '인덱슀λ₯Ό 기반으둜 값을 μ €μž₯'ν•˜λŠ” 것이라면 λ”•μ…”λ„ˆλ¦¬λŠ” 'ν‚€ 값을 기반으둜 값을 μ €μž₯'ν•©λ‹ˆλ‹€.
λ”•μ…”λ„ˆλ¦¬λŠ” 킀와 값이 ν•œ 쌍으둜 μ €μž₯λ˜μ–΄ κ΄€λ¦¬ν•©λ‹ˆλ‹€.
len()을 μ‚¬μš©ν•˜λ©΄ ν•œ μŒμ„ 1둜 μΉ΄μš΄νŠΈν•©λ‹ˆλ‹€.
ν‚€ 값은 쀑볡이 될 수 μ—†μœΌλ©°, 값은 쀑볡이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

β–Ά dictionary μ„ μ–Έ

λ”•μ…”λ„ˆλ¦¬λŠ” μ€‘κ΄„ν˜Έ { }둜 μ„ μ–Έν•˜λ©°, ν‚€ : κ°’ ν˜•νƒœλ₯Ό μ‰Όν‘œλ‘œ μ—°κ²°ν•΄μ„œ λ§Œλ“­λ‹ˆλ‹€.
λ”•μ…”λ„ˆλ¦¬λͺ… = ν‚€ : κ°’, ν‚€ : κ°’,....}

dic = {} 
dic1 = {'name': '홍길동', 'birthday':'1212'}
print(dic) # {} -> 빈 λ”•μ…”λ„ˆλ¦¬
print(dic1) # {'name': '홍길동', 'birthday': '1212'}


β–Ά dictionary μš”μ†Œμ— μ ‘κ·Ό

λ”•μ…”λ„ˆλ¦¬ μ„ μ–Έ ν›„ νŠΉμ • ν‚€ κ°’λ§Œ λ”°λ‘œ 좜λ ₯ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.
μš”μ†Œμ— μ ‘κ·Όν•  λ•ŒλŠ” 리슀트처럼 λ”•μ…”λ„ˆλ¦¬ 뒀에 λŒ€κ΄„ν˜Έ[ ]λ₯Ό μž…λ ₯ν•˜κ³  λ‚΄λΆ€ 인덱슀처럼 ν‚€λ₯Ό μž…λ ₯ν•©λ‹ˆλ‹€.
λ”•μ…”λ„ˆλ¦¬λͺ… [ν‚€]

dic = {'name': '홍길동', 'birthday':'1212'} # λ”•μ…”λ„ˆλ¦¬ μ„ μ–Έ
print(dic['name']) # κ°’ '홍길동'이 좜λ ₯
a = dic['birthday'] # λ³€μˆ˜ a에 1212 λ‹΄κΈ°
print(a) # κ°’ '1212'κ°€ 좜λ ₯


β–Ά dictionary μΆ”κ°€, μˆ˜μ •

λ”•μ…”λ„ˆλ¦¬μ— 값을 μΆ”κ°€ν•  λ•ŒλŠ” ν‚€λ₯Ό 기반으둜 값을 μž…λ ₯ν•˜λ©΄ λ©λ‹ˆλ‹€.
λ”•μ…”λ„ˆλ¦¬μ— μƒˆλ‘œμš΄ 자료λ₯Ό μΆ”κ°€ν•˜κ³ μž ν•œλ‹€λ©΄ λ‹€μŒκ³Ό 같이 ν‚€λ₯Ό μ •ν•˜κ³  값을 μž…λ ₯ν•©λ‹ˆλ‹€.
λ”•μ…”λ„ˆλ¦¬λͺ… [ν‚€] = μƒˆλ‘œμš΄ κ°’

dic = {'name': '홍길동', 'birthday':'1212'}
dic['address'] = 'μ„œμšΈ' # ν•΄λ‹Ήν•˜λŠ” ν‚€κ°€ μ—†μœΌλ©΄ μΆ”κ°€ 됨
print(dic) # {'name': '홍길동', 'birthday': '1212', 'address': 'μ„œμšΈ'}


ν•˜μ§€λ§Œ λ”•μ…”λ„ˆλ¦¬μ—
이미 μ‘΄μž¬ν•˜κ³  μžˆλŠ” ν‚€λ₯Ό μ§€μ •ν•˜κ³  값을 λ„£μœΌλ©΄ 기쑴의 값이 μƒˆλ‘œμš΄ κ°’μœΌλ‘œ μˆ˜μ •λ©λ‹ˆλ‹€.

dic = {'name': '홍길동', 'birthday':'1212'}
dic['name'] = '라이언'
print(dic) # {'name': '라이언', 'birthday': '1212'} 'name'이 '라이언'으둜 μˆ˜μ • 됨


β–Ά dictionary 제거

delν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ λ”•μ…”λ„ˆλ¦¬μ˜ νŠΉμ • ν‚€λ₯Ό μ§€μ •ν•˜λ©΄ ν•΄λ‹Ή μš”μ†Œκ°€ μ œκ±°λ©λ‹ˆλ‹€. (ν‚€, 값이 ν•œ 쌍으둜 μ‚­μ œ)
del λ”•μ…”λ„ˆλ¦¬λͺ…[ν‚€]

dic = {'name': '홍길동', 'birthday':'1212','address':'μ„œμšΈ' }
del dic['address'] # address에 ν•΄λ‹Ήν•˜λŠ” 킀와 값을 μ‚­μ œ
print(dic) # {'name': '홍길동', 'birthday': '1212'}


β–Ά dictionary 검색

λ”•μ…”λ„ˆλ¦¬μ— μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” 킀에 μ ‘κ·Όν•˜λ©΄ KeyErrorκ°€ λ°œμƒν•©λ‹ˆλ‹€.
κ·Έλž˜μ„œ μ‘΄μž¬ν•˜λŠ” 킀인지, μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” 킀인지 확인할 수 μžˆλŠ” 방법이 ν•„μš”ν•©λ‹ˆλ‹€.
λ¦¬μŠ€νŠΈμ™€ λ§ˆμ°¬κ°€μ§€λ‘œ λ”•μ…”λ„ˆλ¦¬ λ˜ν•œ inν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.
ν‚€ in λ”•μ…”λ„ˆλ¦¬λͺ… : ν‚€ 값이 있으면 μ°Έ

dic = {'name': '홍길동', 'birthday':'1212'}
print('name' in dic) # true


킀와 값을 λͺ¨λ‘ μ§€μšΈλ•ŒλŠ” λ¦¬μŠ€νŠΈμ™€ λ§ˆμ°¬κ°€μ§€λ‘œ clearλ₯Ό μ‚¬μš©ν•΄ μ€λ‹ˆλ‹€.

λ”•μ…”λ„ˆλ¦¬λͺ….clear()

dic = {'name': '홍길동', 'birthday':'1212'}
dic.clear() # dic λͺ¨λ“  ν‚€, κ°’ μ‚­μ œ
print(dic) # {}


β–Ά dictionary ν‚€, κ°’ 뢄리

λ”•μ…”λ„ˆλ¦¬μ˜ ν‚€, 값이 ν•œ 쌍의 ν˜•νƒœκ°€ μ•„λ‹Œ ν‚€λ§Œ, κ°’λ§Œ λ”°λ‘œ λΆ„λ¦¬ν•˜μ—¬ 리슀트둜 좜λ ₯ν•  수 도 μžˆμŠ΅λ‹ˆλ‹€.
list(λ”•μ…”λ„ˆλ¦¬λͺ….keys()) key리슀트 λ§Œλ“€κΈ°

dic = {'name': '홍길동', 'birthday':'1212'}
print(dic.keys()) # dict_keys(['name', 'birthday']) # ν‚€ λΆ€λΆ„λ§Œ λ”°λ‘œ λͺ¨μ€ 것


λ”•μ…”λ„ˆλ¦¬λͺ….valuse()
κ°’(value) 리슀트 λ§Œλ“€κΈ°

dic = {'name': '홍길동', 'birthday':'1212'}
print(dic.values()) # dict_values(['홍길동', '1212']) # κ°’ λΆ€λΆ„λ§Œ λ”°λ‘œ λͺ¨μ€ 것


λ§Œμ•½ 킀와 값을 λ™μ‹œμ— μ–»κ³  μ‹Άλ‹€λ©΄ itemsν•¨μˆ˜λ₯Ό μ΄μš©ν•˜λ©΄ λ©λ‹ˆλ‹€.

itemsν•¨μˆ˜λŠ” 킀와 κ°’ μŒμ„ tuple둜 λ°˜ν™˜ν•©λ‹ˆλ‹€.

dic = {'name': '홍길동', 'birthday':'1212'}
print(dic.items()) # dict_items([('name', '홍길동'), ('birthday', '1212')])

2. setπŸ”€

μ„ΈνŠΈ(집합)도 λ”•μ…”λ„ˆλ¦¬μ™€ λ§ˆμ°¬κ°€μ§€λ‘œ μˆ˜μ •, μΆ”κ°€, μ‚­μ œκ°€ κ°€λŠ₯ν•œ(mutable) μžλ£Œκ΅¬μ‘°μž…λ‹ˆλ‹€.
μ„ΈνŠΈλŠ” μˆœμ„œκ°€ μ—†λŠ” μžλ£Œκ΅¬μ‘°μ΄λ―€λ‘œ 인덱싱, μŠ¬λΌμ΄μ‹±μ΄ λΆˆκ°€ν•©λ‹ˆλ‹€.
λ˜ν•œ μ€‘λ³΅λœ 값을 ν—ˆμš©ν•˜μ§€ μ•ŠκΈ°μ— 쀑볡 제거용으둜 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

β–Ά set μ„ μ–Έ

μ€‘κ΄„ν˜Έ{ }λ₯Ό μ‚¬μš©ν•˜μ—¬ μ •μ˜ν•˜λ©° μ‰Όν‘œλ‘œ μš”μ†Œλ₯Ό κ΅¬λΆ„ν•©λ‹ˆλ‹€.
set은 쀑볡을 ν—ˆμš©ν•˜μ§€ μ•ŠκΈ°μ— λ™μΌν•œ 값을 ν¬ν•¨ν•˜μ—¬λ„ ν•˜λ‚˜μ˜ κ°’λ§Œ μœ μ§€λ©λ‹ˆλ‹€.
setλͺ… = {κ°’ 1, κ°’ 2, κ°’ 3}

# κΈ°λ³Έ ν˜•νƒœ
set = {1, 2, 3}
print(set) # {1, 2, 3}

# 빈set 
set2 = set()
print(set2) # set()

# 쀑볡값을 좜λ ₯ν•˜μ§€ μ•ŠμŒ
set3 = {1, 2, 3, 3, 3, 4, 5}
print(set3) # {1, 2, 3, 4, 5}


β–Ά set μΆ”κ°€

μ„ΈνŠΈμ˜ ν•­λͺ©μ„ μΆ”κ°€ν•  λ•ŒλŠ” add, updatae λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ λ©λ‹ˆλ‹€.
addλŠ” ν•˜λ‚˜μ˜ 값이 μΆ”κ°€λ˜λ©° μΆ”κ°€λœ 값은 κΈ°μ‘΄ μš”μ†Œμ˜ 맨 뒀에 μƒμ„±λ©λ‹ˆλ‹€.
setλͺ….add(κ°’)

s1 = {1, 2, 3}
s1.add(4) # 무쑰건 맨 뒀에 μΆ”κ°€ (μˆœμ„œκ°€ μ—†κΈ° λ•Œλ¬Έμ—)
print(s1) # {1, 2, 3, 4}


setλͺ….update([κ°’ 1, κ°’ 2, κ°’ 3])

s1 = {1, 2, 3}
s1.update([4, 5, 6])
print(s1) # {1, 2, 3, 4, 5, 6}


β–Ά set 제거

set의 값을 μ œκ±°ν•  λ•ŒλŠ” removeλ₯Ό μ‚¬μš©ν•˜λ©΄ λ©λ‹ˆλ‹€.
setλŠ” μˆœμ„œκ°€ μ—†λŠ” 자료ꡬ쑰둜 인덱싱, μŠ¬λΌμ΄μ‹±μ΄ λΆˆκ°€λŠ₯ν•˜λ―€λ‘œ μ§€μšΈ 값을 직접 κΈ°μž…ν•˜μ—¬ νŠΉμ • 값을 μ œκ±°ν•©λ‹ˆλ‹€.
setλͺ….remove(κ°’)

s1 = {1, 2, 3, 4}
s1.remove(3) # κ°’ 3을 μ§€μ›ŒλΌ
print(s1) # {1, 2, 4}

3. μ»¬λ ‰μ…˜ μžλ£Œν˜• λΉ„κ΅πŸ†š

μ§€κΈˆκΉŒμ§€ list, tuple, dictionary, set에 λŒ€ν•΄ μ•Œμ•„λ³΄μ•˜λŠ”λ°μš”!
μ΄λ²ˆμ—λŠ” μ»¬λ ‰μ…˜ μžλ£Œν˜•λ“€μ˜ 차이점을 ν•œλ²ˆ μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€πŸ‘€

list tuple dictionary set
listλͺ… = [ κ°’1, κ°’2] dataTuple1 = ( 1,2,3 ) dictλͺ… = { ν‚€ : κ°’}
setλͺ… = { κ°’1, κ°’2}
setλͺ… = set ( )
μˆœμ„œκ°€ μžˆλŠ” μžλ£Œν˜• (μ‹œν€€μŠ€ μžλ£Œν˜•) μˆœμ„œκ°€ μ—†λŠ” μžλ£Œν˜•
mutable(κ°€λ³€) immutable(λΆˆλ³€) mutable(κ°€λ³€) mutable(κ°€λ³€)
쀑볡 κ°’ ν—ˆμš© 쀑볡 κ°’ ν—ˆμš© 쀑볡 κ°’ λΆˆκ°€ ν‚€ 쀑볡 λΆˆκ°€
κ°’ 쀑볡 κ°€λŠ₯

4. ν•΅μ‹¬λ‚΄μš©πŸ‘€

λ”•μ…”λ„ˆλ¦¬
μ„ΈνŠΈ

728x90
λ°˜μ‘ν˜•