Algorithm🐀/Python

[자료ꡬ쑰🌱] λ”•μ…”λ„ˆλ¦¬

JaeStory 2023. 6. 7. 16:27
λ°˜μ‘ν˜•

βœ”οΈλ”•μ…”λ„ˆλ¦¬μ˜ κ°œλ…

 

λ”•μ…”λ„ˆλ¦¬(dictionary)λŠ” μ‚¬μ „μ΄λΌλŠ” μ˜λ―Έλ‹€. μ‚¬μ „μ—λŠ” 단어와 κ·Έ λ‹¨μ–΄μ˜ μ„€λͺ…이 μ €μž₯λ˜μ–΄ μžˆλ‹€. μ—¬κΈ°μ„œ λ‹¨μ–΄λŠ” ν‚€(key), μ„€λͺ…은 κ°’(value)이닀. νŒŒμ΄μ¬μ˜ λ”•μ…”λ„ˆλ¦¬λŠ” 킀와 κ°’μ˜ μŒμ„ μ €μž₯ν•  수 μžˆλŠ” 객체이닀. κ·Έλ¦¬κ³  ν‚€λ₯Ό μ΄μš©ν•˜μ—¬ 값을 검색할 수 μžˆλ‹€.


λ”•μ…”λ„ˆλ¦¬μ—μ„œ ν‚€λŠ” ν•΄μ‹œκ°€λŠ₯ 객체이어야 ν•˜κ³  μ€‘λ³΅λ˜λŠ” 값을 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€.

 

 

 

 

βœ”οΈλ”•μ…”λ„ˆλ¦¬μ˜ 생성

 

 

λ”•μ…”λ„ˆλ¦¬λŠ” μ€‘κ΄„ν˜Έ μ•ˆμ— ν•­λͺ©μ„ μ‰Όν‘œλ‘œ λΆ„λ¦¬μ‹œμΌœμ„œ λ‚˜μ—΄ν•˜λ©΄ λœλ‹€. ν•­λͺ©μ€ ν‚€(key)와 κ°’(value)으둜 κ΅¬μ„±λœλ‹€.

λ”•μ…”λ„ˆλ¦¬μ—μ„œ 값은 μ–΄λ–€ 객체이든지 κ°€λŠ₯ν•˜μ§€λ§Œ ν‚€λŠ” λ³€κ²½ λΆˆκ°€λŠ₯ν•œ 객체이어야 ν•œλ‹€. 즉 λ¬Έμžμ—΄μ΄λ‚˜ μˆ«μžμ—¬μ•Ό ν•œλ‹€. λ§Œμ•½ ν‚€κ°€ 변경이 κ°€λŠ₯ν•˜λ©΄ λ§Žμ€ λ¬Έμ œκ°€ λ°œμƒν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.
예λ₯Ό λ“€μ–΄ 넀이버든, λ„₯슨 κ²Œμž„μ΄λ“  아이디(ν‚€)λŠ” 쀑볡검사λ₯Ό ν•˜μ—¬ 쀑볡을 μ‚΄νŽ΄λ³Έλ‹€. 또 λŒ€ν•™κ΅μ—μ„œ 이름은 같아도 ν•™λ²ˆμ€ λ‹€λ₯Έ 점이 μžˆλ‹€.

λ‹€μŒμ€ μ‚¬λžŒμ˜ 이름과 μ „ν™”λ²ˆν˜Έλ₯Ό λ”•μ…”λ„ˆλ¦¬λ‘œ μ €μž₯ν•œλ‹€.

contacts = {‘Kim’: "01012345678', 'Park' : 01012345679’, 'Lee':'01012345680οΌ‡}
print(contacts)
좜λ ₯κ²°κ³Ό
{ ‘Kim’ : ‘101012345678’ , ‘Lee’ : 101012345680’, Park : '01012345679'}

μœ„μ˜ λ¬Έμž₯은 3개의 ν•­λͺ©μ„ κ°€μ§„ λ”•μ…”λ„ˆλ¦¬λ₯Ό μƒμ„±ν•œλ‹€. κ° ν•­λͺ©μ€ 'ν‚€:κ°’'의 ν˜•μ‹μœΌλ‘œ κ΅¬μ„±λœλ‹€. 첫 번째 ν•­λͺ©μ˜ ν‚€ 값은 'kim'이며 값은 '101012345678' 이닀. ν‚€μ˜ μžλ£Œν˜•μ€ ν˜Όν•©λ˜μ–΄λ„ λœλ‹€.

곡백 λ”•μ…”λ„ˆλ¦¬λŠ” 빈 μ€‘κ΄„ν˜Έ { }둜 μƒμ„±ν•œλ‹€. ν˜Όλ™ν•  수 μžˆλŠ” 점이 μ„ΈνŠΈλ˜ν•œ μ€‘κ΄„ν˜Έ {} λ₯Ό μ΄μš©ν•˜μ—¬ μƒμ„±ν•œλ‹€. ν—ˆλ‚˜ μ„ΈνŠΈμ˜ λΉˆκ΄„ν˜ΈλŠ” set() λ©”μ„œλ“œλ₯Ό 톡해,곡백 λ”•μ…”λ„ˆλ¦¬λŠ” λ‹¨μˆœν•œ {}둜 μƒμ„±λœλ‹€.

 

 

# λ‚΄κ°€ μ“΄ μ˜ˆμ‹œ

 

contacts = {"Kim" : "01012345678", "Park" : "01099993333"}
print(contacts)

contacts2 = {}
contacts2["Kim"] = "01012345678"
contacts2["Park"] = "01022222222"
contacts2["Yes"] = "01022345555"

print(contacts2)

 

 

 

 

 

βœ”οΈν•­λͺ© 좜λ ₯ν•˜κΈ°

 

contacts2 = {}
contacts2["Kim"] = "01012345678"
contacts2["Park"] = "01022222222"
contacts2["Yes"] = "01022345555"
print(f"contacts2의 값은 {contacts2} μž…λ‹ˆλ‹€")

for contact in contacts2: # contacts라고만 μ“°λ©΄ keyκ°’λ§Œ λ‚˜μ˜¨λ‹€
    print(contact, end=" ")
print()

for contact in contacts2.items(): # items()λŠ” key, valueκ°’ λ‘˜ λ‹€
    print(contact, end=" ")
print()

for contact in contacts2.keys(): # keys()λŠ” keyκ°’λ§Œ λ‚˜μ˜¨λ‹€
    print(contact, end=" ")
print()

for contact in contacts2.values(): # values()λŠ” valueκ°’λ§Œ λ‚˜μ˜¨λ‹€
    print(contact, end=" ")
print()

 

 

 

βœ”οΈν•­λͺ© μ ‘κ·Όν•˜κΈ°

 

1) ν‚€ 값이 λ”•μ…”λ„ˆλ¦¬ μ•ˆμ— μ‘΄μž¬ν•˜λŠ”μ§€ 확인

 

if "Kim" in contacts2:
    print("Kim의 ν‚€ 값이 contacts2 λ”•μ…”λ„ˆλ¦¬ μ•ˆμ— μ‘΄μž¬ν•©λ‹ˆλ‹€")
else:
    print("μ—†μ–΄μš” ^^")

 

 

 

 

2) λ”•μ…”λ„ˆλ¦¬ μ•ˆμ—μ„œ ν•­λͺ©μ˜ κ°’ κΊΌλ‚΄κΈ°

 

λ”•μ…”λ„ˆλ¦¬μ—μ„œ ν•­λͺ©μ„ κΊΌλ‚Ό λ•Œ ν•­λͺ©μ˜ ν‚€λ₯Ό μ‚¬μš©ν•œλ‹€. ν‚€λ₯Ό [] μ•ˆμ— μ§€μ •ν•˜κ±°λ‚˜ get()λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν•œλ‹€. μ˜ˆλ₯Ό λ“€μ–΄ μœ„μ˜ μ˜ˆμ‹œμ—μ„œ 이름이 'kim'인 μ‚¬λžŒμ˜ 번호λ₯Ό κΊΌλ‚΄κ³ μž ν•œλ‹€λ©΄ λ‹€μŒκ³Ό 같이 λ¬Έμž₯을 μ“΄λ‹€. 만일 ν‚€κ°€ λ”•μ…”λ„ˆλ¦¬μ— μ‘΄μž¬ν•˜μ§€ μ•Šλ‹€λ©΄ KeyErrorκ°€ λ°œμƒν•œλ‹€.

 

contacts = {"Kim’ : ‘01012345678', 'Park’ : '01012345679’, 'Lee': '01012345680οΌ‡}
print(contacts['Kim’])
contacts.get('Kim’)

좜λ ₯κ²°κ³Ό
‘01012345678'
'01012345678’

만일 get()을 μ‚¬μš©ν–ˆμ„ λ•Œ, ν‚€κ°€ μ—†λ‹€λ©΄ None이 λ°˜ν™˜λœλ‹€.

ν‚€κ°€ 없을 λ•Œμ˜ λ””ν΄νŠΈλ₯Ό μ§€μ •ν•˜λ €λ©΄ get()의 두 번째 인수둜 λ””ν΄νŠΈ 값을 μ§€μ •ν•œλ‹€.

number = contacts.get("Choi", "010114") 
print(number)

좜λ ₯κ²°κ³Ό
‘1010114’

 

 

βœ”οΈν•­λͺ© μΆ”κ°€ 및 λ³€κ²½ν•˜κΈ°

 

λ”•μ…”λ„ˆλ¦¬λ„ 변경이 κ°€λŠ₯ν•œ μ»¨ν…Œμ΄λ„ˆμ΄λ‹€. λ”°λΌμ„œ λ”•μ…”λ„ˆλ¦¬μ— ν•­λͺ©μ„ μΆ”κ°€, μ œκ±°κ°€ κ°€λŠ₯ν•˜λ‹€. μΆ”κ°€ 및 제거λ₯Ό ν•˜μ—¬λ„ λ™μΌν•œ μ£Όμ†Œλ₯Ό κ°€μ§„λ‹€.
예λ₯Ό λ“€μ–΄ μ—°λ½μ²˜λ₯Ό μΆ”κ°€ν•˜κ³ μž ν•œλ‹€λ©΄ λ‹€μŒκ³Ό 같이 μž‘μ„±ν•œλ‹€.

contacts['Choi'] = '01056781234οΌ‡
print(contacts)

좜λ ₯κ²°κ³Ό
{‘Kim’ : ‘01012345678’ , ‘Choi’ : '01056781234’, 'Lee’ : ‘01012345680', 'Park': '01012345679'}

 

βœ”οΈν•­λͺ© μ‚­μ œν•˜κΈ°

 

λ”•μ…”λ„ˆλ¦¬μ—μ„œ νŠΉμ •ν•œ ν•­λͺ©μ˜ μ‚­μ œλŠ” pop()λ©”μ„œλ“œ, del ν‚€μ›Œλ“œ, clear()λ©”μ„œλ“œκ°€ μžˆλ‹€.

  • pop()은 μ£Όμ–΄μ§„ 킀에 ν•΄λ‹Ή ν•˜λŠ” ν•­λͺ©μ„ μ œκ±°ν•˜κ³  λ°˜ν™˜ν•œλ‹€.
contacts {‘Kim’ : ‘01012345678', 'Park’ : '01012345679’, 'Lee': '01012345680’ }
print(contacts.pop(‘Kim’))
print(contacts)

좜λ ₯κ²°κ³Ό
‘01012345678οΌ‡
{'Lee': '01012345680', 'Park'; '010123456791}
  • delλŠ” 킀에 ν•΄λ‹Ή ν•˜λŠ” ν•­λͺ©μ„ 제거만 ν•œλ‹€.
contacts {‘Kim’ : ‘01012345678', 'Park’ : '01012345679’, 'Lee': '01012345680’ }
del contacts[‘Kim’]
print(contacts)

좜λ ₯κ²°κ³Ό
{'Lee': '01012345680', 'Park'; '010123456791}
  • clear() λŠ” λͺ¨λ“  ν•­λͺ©μ„ μ‚­μ œν•œλ‹€.

 

βœ”οΈν•­λͺ© μˆœνšŒν•˜κΈ°

 

λ”•μ…”λ„ˆλ¦¬μ— μ €μž₯된 ν•­λͺ©μ„ μˆœνšŒν•˜κΈ° μœ„ν•΄μ„  for문을 μ΄μš©ν•œλ‹€.

scores = { 'Korean': 80, 'Math': 90, 'English': 80 }
for item in scores.items():      # 킀와 값을 ν•¨κ»˜ 좜λ ₯ν•˜κΈ° μœ„ν•˜μ—¬ items()λ₯Ό μ‚¬μš©ν•¨
	print(item, end= ‘ ‘)

좜λ ₯κ²°κ³Ό
('Math', 90) ('English', 80) ('Korean', 80)

μœ„μ˜ λ¬Έμž₯μ—μ„œ scores λ”•μ…”λ„ˆλ¦¬μ˜ 킀와 값을 λͺ¨λ‘ 좜λ ₯ν•˜κΈ° μœ„ν•΄ items()λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν–ˆλ‹€. 만일 μ € λ©”μ„œλ“œκ°€ μ—†λ‹€λ©΄ ν‚€ κ°’λ§Œ 좜λ ₯λœλ‹€.

 

 

βœ”οΈν•­λͺ©μ΄ 쑴재 유무 검사

 

μ–΄λ–€ ν‚€κ°€ λ”•μ…”λ„ˆλ¦¬μ— μ‘΄μž¬ν•˜λŠ”μ§€μ˜ κ²€μ‚¬λŠ” in μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•œλ‹€.

squares = {1 : 1, 3 : 9, 5 : 25, 7 : 49, 9 : 81}
print(squares)
print(1 in squares)
print(2 not in squares)

좜λ ₯κ²°κ³Ό
{1 : 1, 3 : 9, 5 : 25, 7 : 49, 9 : 81}
True
True

 

 

ref : https://velog.io/@raed123456/11%EC%9E%A5.-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0%EB%94%95%EC%85%94%EB%84%88%EB%A6%AC-%EB%AC%B8%EC%9E%90%EC%97%B4

 

λ°˜μ‘ν˜•