λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Python/κ°œλ… 정리

[Python] λ”•μ…”λ„ˆλ¦¬μ™€ μ…‹

by eugene663 2021. 9. 12.

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

1. λ”•μ…”λ„ˆλ¦¬(dictionary)λž€?

λ¦¬μŠ€νŠΈμ™€ λΉ„μŠ·ν•˜λ‹€. 차이점은 ν•­λͺ©μ˜ μˆœμ„œλ₯Ό λ”°μ§€μ§€ μ•Šκ³  offset으둜 ν•­λͺ©μ„ 선택할 수 μ—†λ‹€λŠ” 것이닀. 

λ”•μ…”λ„ˆλ¦¬λŠ” ν‚€:κ°’μ˜ ν˜•νƒœλ‘œ κ°’(value)에 μƒμ‘ν•˜λŠ” κ³ μœ ν•œ ν‚€(key)λ₯Ό μ§€μ •ν•œλ‹€. ν‚€λŠ” λΆˆλ³€ν•˜λŠ” 파이썬의 νƒ€μž…(λΆˆλ¦¬μ–Έ, μ •μˆ˜, λΆ€λ™μ†Œμˆ˜μ , νŠœν”Œ, λ¬Έμžμ—΄ λ“±)이 될 수 μžˆλ‹€. 리슀트, λ”•μ…”λ„ˆλ¦¬, 셋은 올 수 μ—†λ‹€.

λ”•μ…”λ„ˆλ¦¬λŠ” κ°€λ³€, λ³€κ²½ κ°€λŠ₯ν•˜λ―€λ‘œ ν‚€:κ°’ μš”μ†Œ μΆ”κ°€, μ‚­μ œ, μˆ˜μ • κ°€λŠ₯ν•˜λ‹€.

킀에 μ–΄λ–€ 정보λ₯Ό μ²¨λΆ€ν•΄μ„œ κ·Έ κ²°κ³Όλ₯Ό μ–»μœΌλ € ν•  λ•Œ μ‚¬μš©ν•œλ‹€. 

 

2. 생성: {}, dict()

μ€‘κ΄„ν˜Έ{}μ•ˆμ— 콀마(,)둜 ν‚€:값을 κ΅¬λΆ„ν•˜μ—¬ μ§€μ •ν•œλ‹€.

{ }

dict()의 μΈμˆ˜λŠ” 곡백과 μ˜ˆμ•½μ–΄κ°€ μ—†λŠ” μœ νš¨ν•œ λ³€μˆ˜ 이름이 올 수 μžˆλ‹€. (μ˜ˆμ•½μ–΄: λ¬Έλ²•μ μœΌλ‘œ μ‚¬μš©λ˜λŠ” 단어)

dict()

dict()λŠ” 두 κ°’μœΌλ‘œ 이루어진 μ‹œν€€μŠ€λ₯Ό λ”•μ…”λ„ˆλ¦¬λ‘œ λ³€ν™˜ν•  μˆ˜λ„ μžˆλ‹€. 리슀트, λ¬Έμžμ—΄, νŠœν”Œ 등이 κ°€λŠ₯ν•˜λ‹€. 특히 zip()을 μ΄μš©ν•˜λ©΄ 두 ν•­λͺ© μ‹œν€€μŠ€λ₯Ό μ‰½κ²Œ 생성할 수 μžˆλ‹€.

λ”•μ…”λ„ˆλ¦¬λ‘œ λ³€ν™˜

2. ν•­λͺ© μΆ”κ°€ 및 λ³€κ²½ : [key]

key에 μ°Έμ‘°λ˜λŠ” ν•­λͺ©μ— 값을 ν• λ‹Ήν•œλ‹€. 

리슀트, νŠœν”Œμ€ offset으둜 인덱슀λ₯Ό μ‚¬μš©ν•˜μ§€λ§Œ λ”•μ…”λ„ˆλ¦¬λŠ” ν‚€λ₯Ό μ‚¬μš©ν•œλ‹€.

 

3. μ–»κΈ°

  • ν•­λͺ© μ–»κΈ°: [key], get()
  • λͺ¨λ“  ν‚€ μ–»κΈ°: keys()  - dict_keys()둜 λ°˜ν™˜λ¨
  • λͺ¨λ“  κ°’ μ–»κΈ°: values() - 리슀트둜 λ°˜ν™˜
  • λͺ¨λ“  ν‚€-κ°’ μ–»κΈ°: items() - νŠœν”Œλ‘œ λ°˜ν™˜
  • 길이 μ–»κΈ°: len()

4. κ²°ν•©

  • {**a, **b}: λ‘κ°œ 이상 결합이 κ°€λŠ₯ν•˜κ³  얇은 볡사이닀.

  • update()

λ³‘ν•©ν•˜λŠ” 두 λ”•μ…”λ„ˆλ¦¬μ— 같은 ν‚€:값이 μžˆλ‹€λ©΄ λ‘λ²ˆμ§Έ λ”•μ…”λ„ˆλ¦¬ κ°’μœΌλ‘œ μ €μž₯λœλ‹€.

 

5. μ‚­μ œ

  • del λ”•μ…”λ„ˆλ¦¬[key]
  • pop(): ν‚€λ‘œ ν•­λͺ© 가져와 μ‚­μ œ
  • clear(): λͺ¨λ“  ν•­λͺ© μ‚­μ œ

6. ...

  • in: key 멀버십 ν…ŒμŠ€νŠΈ, 있으면 True μ—†μœΌλ©΄ Falseλ₯Ό λ°˜ν™˜ν•œλ‹€.
  • ν• λ‹Ή = : ν• λ‹Ή ν›„ λ³€κ²½ν•˜λ©΄ μ°Έμ‘°ν•˜λŠ” λͺ¨λ“  이름에 λ°˜μ˜λœλ‹€.
  • 비ꡐ: ==, != 만 κ°€λŠ₯ν•˜λ‹€. 이외 비ꡐ μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λ©΄ μ—λŸ¬κ°€ λ°œμƒν•œλ‹€.
  • 순회 for in: λ”•μ…”λ„ˆλ¦¬λ₯Ό μˆœνšŒν•˜λ©΄ ν‚€λ₯Ό λ°˜ν™˜ν•œλ‹€. items()λ₯Ό μ‚¬μš©ν•˜λ©΄ ν‚€-값을 λͺ¨λ‘ νŠœν”Œλ‘œ λ°˜ν™˜ν•œλ‹€.
  • κΉŠμ€ 볡사 : deepcopy() (β€» νŠœν”Œκ³Ό 리슀트 κ²Œμ‹œλ¬Ό μ°Έκ³ )

7. λ”•μ…”λ„ˆλ¦¬ μ»΄ν”„λ¦¬ν—¨μ…˜

κ°€λ³€ν•˜λ―€λ‘œ μ»΄ν”„λ¦¬ν—¨μ…˜μ„ μ‚¬μš©ν•  수 μžˆλ‹€. for inκΈ°λŠ₯을 μˆ˜ν–‰ν•˜λ©° if와 닀쀑 for문도 μ‚¬μš©ν•  수 μžˆλ‹€.

  • { ν‚€_ν‘œν˜„μ‹ : κ°’_ν‘œν˜„μ‹ for ν‘œν˜„μ‹ in 순회 κ°€λŠ₯ 객체 }
  • { ν‚€_ν‘œν˜„μ‹ : κ°’_ν‘œν˜„μ‹ for ν‘œν˜„μ‹ in 순회 κ°€λŠ₯ 객체 if ν…ŒμŠ€νŠΈ }


μ…‹

1. μ…‹(set)μ΄λž€?

집합이닀. 값을 버리고 ν‚€λ§Œ 남은 λ”•μ…”λ„ˆλ¦¬μ™€ κ°™λ‹€. 각 ν‚€λŠ” μœ μΌν•΄μ•Ό ν•˜λ©° 쀑볡될 수 μ—†λ‹€. μ–΄λ–€ 것이 μ‘΄μž¬ν•˜λŠ”μ§€ νŒλ‹¨ν•  λ•Œ 주둜 셋을 μ‚¬μš©ν•œλ‹€. 

 

2. 생성 및 λ³€ν™˜: set()

생성은 set() ν•¨μˆ˜λ‚˜ μ€‘κ΄„ν˜Έ{}μ•ˆμ— 콀마(,) κ΅¬λΆ„λœ 값을 λ„£μœΌλ©΄ λœλ‹€. 단, 빈 셋을 생성할 λ•ŒλŠ” {}λ₯Ό μ΄μš©ν•  수 μ—†λ‹€. {}λ₯Ό μ‚¬μš©ν•˜λ©΄ 빈 셋이 μ•„λ‹ˆλΌ 빈 λ”•μ…”λ„ˆλ¦¬λ₯Ό μƒμ„±ν•œλ‹€. νŒŒμ΄μ¬μ—μ„  셋보닀 λ”•μ…”λ„ˆλ¦¬κ°€ λ¨Όμ € λ“±μž₯ν–ˆκΈ° λ•Œλ¬Έμ΄λ‹€.

λ˜ν•œ set()을 톡해 λ¬Έμžμ—΄, 리슀트, νŠœν”Œ, λ”•μ…”λ„ˆλ¦¬μ˜ ν‚€λ₯Ό μ…‹μœΌλ‘œ λ³€ν™˜ν•  수 μžˆλ‹€. μ€‘λ³΅λœ 값을 μ‚­μ œν•˜μ—¬ 셋을 μƒμ„±ν•œλ‹€.

 

3. ...

  • 길이 μ–»κΈ°: len()
  • ν•­λͺ© μΆ”κ°€: add()
  • κ°’μœΌλ‘œ ν•­λͺ© μ‚­μ œ: remove()

셋에 μ—†λŠ” 값을 μž…λ ₯ν•˜λ©΄ μ—λŸ¬κ°€ λ°œμƒν•œλ‹€. discard()λ₯Ό μ‚¬μš©ν•˜λ©΄ μ—λŸ¬λ₯Ό λ°œμƒμ‹œν‚€μ§€ μ•Šκ³  λ¬΄μ‹œν•œλ‹€.

  • 순회: for in

4. 멀버십 ν…ŒμŠ€νŠΈ in

셋을 μ‚¬μš©ν•˜λŠ” 이유둜 λ³Ό 수 μžˆλ‹€. 셋은 μ–΄λ–€ 것이 μ‘΄μž¬ν•˜λŠ”μ§€ νŒλ‹¨ν•  λ•Œ 주둜 μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€. 

 

5. μ½€λΉ„λ„€μ΄μ…˜κ³Ό μ—°μ‚°μž

  • ꡐ집합: &, intersection()
  • ν•©μ§‘ν•©: | , union()
  • μ°¨μ§‘ν•©: -, difference()
  • λŒ€μΉ­μ°¨μ§‘ν•©: ^, symmetric_difference()
  • λΆ€λΆ„μ§‘ν•© 확인(T/F): <= , issubset()
  • μ§„λΆ€λΆ„μ§‘ν•© 확인: <
  • μƒμœ„μ§‘ν•© 확인: >= , issuperset()
  • μ§„μƒμœ„μ§‘ν•© 확인: >

β€»μ§„μƒμœ„μ§‘ν•©μ΄ 되렀면 첫 μ…‹μ—λŠ” λ‘λ²ˆμ§Έ 셋을 ν¬ν•¨ν•œ κ·Έ μ΄μƒμ˜ ν•­λͺ©μ΄ μžˆμ–΄μ•Ό ν•œλ‹€.

 

6. μ…‹ μ»΄ν”„λ¦¬ν—¨μ…˜

λ”•μ…”λ„ˆλ¦¬ μ»΄ν”„λ¦¬ν—¨μ…˜κ³Ό λͺ¨μ–‘이 κ°™λ‹€.

  • { ν‘œν˜„μ‹ for ν‘œν˜„μ‹ in 순회 κ°€λŠ₯ 객체 }
  • { ν‘œν˜„μ‹ for ν‘œν˜„μ‹ in 순회 κ°€λŠ₯ 객체 if ν…ŒμŠ€νŠΈ }

7. λΆˆλ³€ μ…‹ 생성: frozenset()

셋은 κ°€λ³€ν•˜μ§€λ§Œ frozenset() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ λΆˆλ³€μ…‹μ„ λ§Œλ“€ 수 μžˆλ‹€. μΈμˆ˜λ‘œλŠ” μˆœνšŒκ°€λŠ₯ν•œ 객체가 올 수 μžˆλ‹€.

μˆ˜μ •ν•˜κ±°λ‚˜ μΆ”κ°€, μ‚­μ œλŠ” λΆˆκ°€λŠ₯ν•˜λ©° μ—λŸ¬κ°€ λ°œμƒν•œλ‹€.

λΆˆλ³€ μ…‹

 

 

μ°Έκ³  및 좜처: 처음 μ‹œμž‘ν•˜λŠ” 파이썬(빌 λ£¨λ°”λ‘œλ‹‰, ν•œλΉ›λ―Έλ””μ–΄)