πŸ–₯️[Python] 3-2. μ—°μ†ν˜• 데이터

thisk336Β·2023λ…„ 5μ›” 11일
0

Python

λͺ©λ‘ 보기
4/17
post-thumbnail

3.3 집합(Set)

  • 집합 μžλ£Œν˜•μ€ 정말 λ§κ·ΈλŒ€λ‘œ μˆ˜ν•™μ—μ„œ λ°°μš°λŠ” 집합 κ·Έ μžμ²΄μ΄λ‹€.

  • μˆ˜ν•™μ—μ„œλŠ” 집합을 {}둜 ν‘œμ‹œν–ˆμ§€λ§Œ, νŒŒμ΄μ¬μ—μ„œλŠ” μ•ˆνƒ€κΉŒμš΄ 이유둜 {}λ₯Ό μ‚¬μš©ν•˜κΈ΄ ν•˜λŠ”λ° κ·Έλƒ₯ μ‚¬μš©ν•  μˆ˜λŠ” μ—†λ‹€. μ™œλƒλ©΄ 사전(Dictionary) μžλ£Œν˜•λ„ {}λ₯Ό μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.

  • 곡집합을 생성할 λ•ŒλŠ” λ°˜λ“œμ‹œ set()으둜 생성해야 ν•œλ‹€. {}둜 μƒμ„±ν•˜λ©΄ 빈 사전이 μƒμ„±λœλ‹€.

  • μ§‘ν•©μ˜ μ—°μ‚°μžμΈ ꡐ집합, 합집합, 차집합을 λͺ¨λ‘ μ§€μ›ν•œλ‹€.

  • μ§‘ν•©μ˜ νŠΉμ§•μ΄ 2가지 μžˆλŠ”λ°, 이 νŠΉμ§•μ΄ λ¦¬μŠ€νŠΈμ™€μ˜ 차이점이라 μ‚¬μš©ν•œλ‹€. 첫번째 νŠΉμ§•μ΄ 집합 μžλ£Œν˜•μ„ μ‚¬μš©ν•˜λŠ” 주된 μ΄μœ μ΄λ‹€.

1) 집합은 μ›μ†Œμ˜ 쀑볡을 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€. 즉, μ›μ†Œμ˜ μ’…λ₯˜λ₯Ό λ‚˜νƒ€λ‚΄κΈ° μ’‹λ‹€.

2) 집합은 μ›μ†Œμ˜ μˆœμ„œκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€. 즉, μ›μ†Œμ˜ indexκ°€ μ—†λ‹€.

s = {1, 2, 3}
s[1] # TypeError: 'set' object is not subscriptable (indexing X)

μ§‘ν•©μ˜ μ—°μ‚°

s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}

# ꡐ집합
s1 & s2
s1.intersection(s2)

# 합집합
s1 | s2
s1.union(s2)

# 차집합
s1 - s2

L = [1, 2, 2, 3, 1, 4, 5, 6, 1, 2, 4, 6]
L2 = [22, 33, 11, 21, 1, 22, 33, 12, 33, 24]
# 두 리슀트의 ꡐ집합을 μ°Ύκ³  μ‹ΆμœΌλ©΄ μ§‘ν•©μœΌλ‘œ μ—°μ‚°ν•  수 μžˆλ‹€.
set(L) & set(L2)

집합 κ΄€λ ¨ ν•¨μˆ˜

# 집합에 μ›μ†Œ ν•˜λ‚˜ μΆ”κ°€ν•˜κΈ° add()
s = set()
s.add(1)

# 집합에 μ—¬λŸ¬ μ›μ†Œ μΆ”κ°€ν•˜κΈ° update()
s = {1, 2, 3}
s.update([3, 4, 5]) # 리슀트, νŠœν”Œμ΄ 듀어와도 μ—°μ‚° κ°€λŠ₯!

# μ§‘ν•©μ—μ„œ μ›μ†Œ μ œκ±°ν•˜κΈ° remove()
s.remove(3)

3.4 사전(Dictionary)

  • νŒŒμ΄μ¬μ—μ„œ μ œκ³΅ν•˜λŠ” 사전 μžλ£Œν˜•μ€ key - value 방법을 톡해 μ €μž₯ν•œλ‹€.
namecode
"John"0011
"Maria"1234
  • 이런 table concept을 μ˜λ―Έν•˜λ©°, μ •μˆ˜ indexκ°€ μ•„λ‹Œ key값을 ν†΅ν•΄μ„œ valueλ₯Ό accessν•œλ‹€.

key-value λ°©μ‹μœΌλ‘œ μ €μž₯을 ν•˜λŠ” κ²ƒμœΌλ‘œ μ–»λŠ” 이점은?
μˆœμ„œκ°€ μ•„λ‹Œ μ˜λ―Έκ°€ μžˆλŠ” 값을 ν†΅ν•΄μ„œ 데이터 접근이 κ°€λŠ₯ν•˜λ‹€.

  • 같은 말둜 Hash Table이라고 뢈리며 데이터 κ΄€λ¦¬μ—μ„œ ꡉμž₯히 μ€‘μš”ν•œ κ°œλ…μ΄λ‹€.

  • νŒŒμ΄μ¬μ—μ„œ 사전 μžλ£Œν˜•μ€ {}을 μ΄μš©ν•˜μ—¬ ν‘œν˜„ν•˜λŠ”λ°, μ§‘ν•©κ³Όμ˜ 차이점을 두기 μœ„ν•΄ μ›μ†Œμ— λ°˜λ“œμ‹œ :κ°€ λ“€μ–΄κ°€μ•Ό ν•œλ‹€.

  • 사전을 ν‘œν˜„ν•  λ•ŒλŠ” {key : value, key2 : value2, ... } ν˜•νƒœλ‘œ ν‘œν˜„ν•œλ‹€.

사전을 λ§Œλ“œλŠ” 방법

D = {"John" : '0011', "Maria" : '1234'}

# 사전에 μ›μ†Œλ₯Ό μΆ”κ°€ν•˜λŠ” 방법
D['Kim'] = '3453'

TIP 사전을 λ§Œλ“€ λ•Œ keyλŠ” 쀑볡이 있으면 μ ˆλŒ€ μ•ˆλœλ‹€.

μ‚¬μ „μ—μ„œ keyκ°€ 될 수 μžˆλŠ” data type은 immutable이어야 ν•œλ‹€.

immutable : tuple, int, float, str

사전 κ΄€λ ¨ ν•¨μˆ˜

D = {'name': 'kim', 'phone': '01012345679', 'birth': '1234'}

# μ‚¬μ „μ˜ λͺ¨λ“  keyκ°’λ“€ 보기 keys()
D.keys()

# μ‚¬μ „μ˜ λͺ¨λ“  valueλ“€ 보기 values()
D.values()

# μ‚¬μ „μ˜ λͺ¨λ“  key, value 쌍 보기 items()
D.items()

# μ‚¬μ „μ˜ μ›μ†Œ μ œκ±°ν•˜κΈ° pop()
D.pop('name') # pop μ•ˆμ—λŠ” **key**κ°’λ§Œ λ“€μ–΄κ°ˆ 수 μžˆλ‹€.

Sequence에 ν•΄λ‹Ή 데이터가 μ‘΄μž¬ν•˜λŠ”μ§€ ν™•μΈν•˜κΈ° : in operator

  • inμ΄λΌλŠ” operatorλŠ” λͺ¨λ“  μ—°μ†ν˜• 데이터 νƒ€μž…μ— μ‚¬μš©ν•  수 μžˆλ‹€.

  • μ‚¬μ „μ˜ κ²½μš°μ—λŠ” key값을 λŒ€μƒμœΌλ‘œ ν•˜κ³ , 리슀트, νŠœν”Œ, 집합, λ¬Έμžμ—΄μ— λŒ€ν•΄μ„œλŠ” ν•΄λ‹Ή μ›μ†Œκ°€ μ‘΄μž¬ν•˜λŠ”μ§€ μ°Ύμ•„μ„œ True / False λ₯Ό μ•Œλ €μ€€λ‹€.

D = {'name': 'kim', 'phone': '01012345679', 'birth': '1234'}

"phone" in D
"Lee" in D # False  ## inμ΄λΌλŠ” 연산은 μ‚¬μ „μ—μ„œλŠ” key에 μ μš©λœλ‹€.

# 리슀트, νŠœν”Œ, μ§‘ν•©μ—μ„œλ„ μ μš©λœλ‹€.
L = [1, 2, 3]
t = (4, 5, 6)
s = {7, 8, 9}
st = "Hello World"

2 in L
4 in t
7 in s
"H" in st

0개의 λŒ“κΈ€