λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
  • μž₯원읡 κΈ°μˆ λΈ”λ‘œκ·Έ
🀷🏼‍♀️ Etc.../- C, C++, Python, Android

Python λ”•μ…”λ„ˆλ¦¬μ˜ λͺ¨λ“  것

by Wonit 2019. 12. 2.

λ”•μ…”λ„ˆλ¦¬ (Dictionary)

 

λ”•μ…”λ„ˆλ¦¬λŠ” μ›Ήμ—μ„œ μ‚¬μš©ν•˜λŠ” 데이터 ν˜•μ‹(Data Format)쀑 JSON νƒ€μž…κ³Ό λΉ„μŠ·ν•˜λ‹€κ³  λŠκΌˆλ‹€. (ν˜Ήμ€ Java Map) λ‘˜ λ‹€ ν‚€(key)와 κ°’(Value) ꡬ쑰λ₯Ό κ°–κ³  있으며 λ³€κ²½ κ°€λŠ₯ν•˜λ‹€.

 

λ”•μ…”λ„ˆλ¦¬ 생성 : {}

 

 

λ”•μ…”λ„ˆλ¦¬λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ€‘κ΄„ν˜Έ{}λ₯Ό μ‚¬μš©ν•΄μ„œ ν‚€:κ°’ ꡬ쑰λ₯Ό μ§€μ •ν•œλ‹€.

 

 

>> info_dict = {
...        1123: 'jang',
...        2214: 'heo'
...    }
>> info_dict
{1123:'jang', 2214:'heo'}

 

두 κ°’μœΌλ‘œ 이뀄진 μ‹œν€€μŠ€λ₯Ό λ”•μ…”λ„ˆλ¦¬λ‘œ λ³€ν™˜ν•˜κΈ° : dict()

 

dict() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•œλ‹€λ©΄ 두 κ°’μœΌλ‘œ 이루어진 μ‹œν€€μŠ€λ₯Ό λ”•μ…”λ„ˆλ¦¬λ‘œ λ³€ν™˜ν•  수 μžˆλ‹€.

 

 

리슀트의 리슀트λ₯Ό λ”•μ…”λ„ˆλ¦¬λ‘œ

>>> life = [['flower', 'rose'], ['animal', 'dog'], ['fruit','apple']]
>>> life
[['flower', 'rose'], ['animal', 'dog'], ['fruit', 'apple']]
>>> dict(life)
{'flower': 'rose', 'animal': 'dog', 'fruit': 'apple'}

dict()ν•¨μˆ˜λŠ” μ—¬λŸ¬ μ’…λ₯˜μ˜ λ¬Έμžμ—΄(νŠœν”Œλ‘œ 된 리슀트, 리슀트둜 된 νŠœν”Œ, λ¬Έμžμ—΄λ‘œ 된 νŠœν”Œ)도 ꡬ쑰만 μΌμΉ˜ν•˜λ©΄ λ³€ν™˜ν•  수 μžˆλ‹€.

 

 

ν•­λͺ© μΆ”κ°€/λ³€κ²½ν•˜κΈ° : [key]

 

 

λ”•μ…”λ„ˆλ¦¬λŠ” κ°€λ³€ν˜• μ‹œν€€μŠ€λ‘œ 값이 변경될 수 μžˆλ‹€κ³  ν–ˆλŠ”λ°, 값이 μΆ”κ°€λ˜λŠ” λ‹€μŒκ³Ό 같이 두 과정쀑 ν•˜λ‚˜κ°€ μΌμ–΄λ‚œλ‹€.

 

  • ν‚€κ°€ λ”•μ…”λ„ˆλ¦¬μ— 이미 μ‘΄μž¬ν•˜λŠ” 경우
    μ΄λŸ¬ν•œ κ²½μš°λŠ” μƒˆλ‘œ μΆ”κ°€ν•˜λŠ” 값이 λŒ€μ²΄λœλ‹€.

    >> student = {
    ...        1 : 'jang',
    ...        2 : 'heo',
    ...        3 : 'kim'
    ... }
    >> student
    { 1:'jang', 2:'heo', 3:'kim'}
    >> student[4] = 'son'
    { 1:'jang', 2:'heo', 3:'kim', 4:'son'}
  • ν‚€κ°€ λ”•μ…”λ„ˆλ¦¬μ— μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” 경우
    이 κ²½μš°λŠ” μƒˆλ‘œ μΆ”κ°€ν•˜λŠ” 값이 킀와 사전에 μΆ”κ°€λœλ‹€.

    >> student = {
    ...        1 : 'jang',
    ...        2 : 'heo',
    ...        3 : 'kim'
    ... }
    >> student
    { 1:'jang', 2:'heo', 3:'kim'}
    >> student[3] : 'song'
    { 1:'jang', 2:'heo', 3:'song'}
[key]μ—λŠ” λ‹€μŒκ³Ό 같은 νŠΉμ„±μ΄ μžˆλŠ”λ° 직접 μ‹€ν—˜ν•΄λ³Έλ‹€λ©΄ 당신은 λ”•μ…”λ„ˆλ¦¬λž‘ μΉœκ΅¬ν•΄λ„ λœλ‹€.
  • 같은 ν‚€λ₯Ό 두 번 이상 μ‚¬μš©ν•œλ‹€λ©΄ λ§ˆμ§€λ§‰ 값이 μŠΉλ¦¬ν•œλ‹€.

λ”•μ…”λ„ˆλ¦¬ κ²°ν•©ν•˜κΈ° : update()

 

update()ν•¨μˆ˜λŠ” ν•œ λ”•μ…”λ„ˆλ¦¬μ˜ 킀와 값듀을 λ³΅μ‚¬ν•΄μ„œ λ‹€λ₯Έ λ”•μ…”λ„ˆλ¦¬μ— λΆ™μ—¬μ€€λ‹€.

 

 

>> student1 = { 1: 'jang', 2: 'heo', 3: 'key'}
>> student2 = { 4: 'choi', 5: 'jae', 6: 'jung'}

 

일 λ•Œ update()κ°€ μΌμ–΄λ‚œλ‹€λ©΄

 

>> student1.update(student2)
>> student1
 { 1: 'jang', 2: 'heo', 3: 'key', 4: 'choi', 5: 'jae', 6: 'jung'}

 

μ΄λΌλŠ” 값이 정상 좜λ ₯λœλ‹€. ν•˜μ§€λ§Œ 의문이 생긴닀. λ”•μ…”λ„ˆλ¦¬μ˜ ν‚€λŠ” μœ μΌν•΄μ•Ό ν•œλ‹€λΌκ³  ν–ˆλŠ”λ° λ§Œμ•½ ν‚€μ˜ 값이 λ‹€μŒκ³Ό κ°™λ‹€λ©΄?

 

>>> student_grade_1
{1: 'jang', 2: 'heo', 3: 'key'}
>>> student_grade_2
{1: 'choi', 2: 'jae', 3: 'jung'}

 

결둠은 당신이 μ‹€ν—˜ν•΄λ³΄λ©° 느끼길 λ°”λž€λ‹€. λŒ“κΈ€λ‘œ 달아주면 고맙겠닀.

 

ν•­λͺ© μ‚­μ œν•˜κΈ° : del + [key], λͺ¨λ“  ν•­λͺ© μ‚­μ œν•˜κΈ° : clear()

 

λ§Œμ•½ 당신이 킀와 ν•­λͺ©μ„ μ‚­μ œν•˜κ³  μ‹Άλ‹€λ©΄ λ‹€μŒκ³Ό 같이 ν•˜λ©΄ λœλ‹€.

 

>> student1 = { 1: 'jang', 2: 'heo', 3: 'key', 4: 'choi', 5: 'jae', 6: 'jung'}
>> del student[6]
>> student1
{ 1: 'jang', 2: 'heo', 3: 'key', 4: 'choi', 5: 'jae'}

그리고 λͺ¨λ“  ν•­λͺ©μ„ μ‚­μ œν•œλ‹€λ©΄. 두 가지 방법이 μžˆλŠ”λ°

 

 

clear() μ‚¬μš©ν•˜κΈ°

>> student1 = { 1: 'jang', 2: 'heo', 3: 'key', 4: 'choi', 5: 'jae', 6: 'jung'}
>> student1.clear()
>> student1
{}

빈 λ”•μ…”λ„ˆλ¦¬ ν• λ‹Ήν•˜κΈ°

>> student1 = { 1: 'jang', 2: 'heo', 3: 'key', 4: 'choi', 5: 'jae', 6: 'jung'}
>> student1 = {}
>> student1
{}
 
 
ν‚€ 멀버가 μžˆλŠ”μ§€ μ‘°νšŒν•˜κΈ° : in

λ”•μ…”λ„ˆλ¦¬μ— ν‚€κ°€ μ‘΄μž¬ν•˜λŠ”μ§€ ν™•μΈν•˜κ³  μ‹Άλ‹€λ©΄ in을 μ‚¬μš©ν•œλ‹€

ν•­λͺ© μ–»κΈ° : [key]

λ”•μ…”λ„ˆλ¦¬μ˜ κ°€μž₯ 일반적인 μš©λ„λ‘œ μ‚¬μš©ν•˜λ©° λ”•μ…”λ„ˆλ¦¬μ— ν‚€λ₯Ό μ§€μ •ν•˜μ—¬ μƒμ‘ν•˜λŠ” 값을 μ–»λŠ”λ‹€.

λͺ¨λ“  ν‚€ μ–»κΈ° : keys(), λͺ¨λ“  κ°’ μ–»κΈ° : values()
λͺ¨λ“  쌍의 ν‚€-κ°’ μ–»κΈ° : items()
ν• λ‹Ή : =, 볡사 : copy()

μœ„μ˜ 5κ°€μ§€λŠ” λ¦¬μŠ€νŠΈμ™€ μ€‘λ³΅λ˜λŠ” λ‚΄μš©μ΄κΈ° λ•Œλ¬Έμ— 리슀트의 링크 둜 λŒ€μ²΄ν•˜λ©° μ‚¬μš©λ²•μ„ 링크λ₯Ό 타고 λ“€μ–΄κ°€μ„œ ν•™μŠ΅ν•˜λ©΄ λœλ‹€.

λŒ“κΈ€