• Q&A
  • 회원가입
  • 로그인

[basic] Python - Dictionary (딕셔너리) - Key:value 쌍으로 구성된 모음

목차

  1. Dictionary 정의
  2. 요소 접근
  3. Value 변경
  4. Dictionary 반복
  5. Key 존재 체크
  6. Dictionary 길이 (= 요소개수)
  7. 요소 추가
  8. 요소 제거
  9. Dictionary 복사
  10. 안긴 Dictionary
  11. dict() 생성자
  12. Dictionary 메서드 종류

 

1. 

Dictionary 정의

 

순서 X, 색인 O, 변경 O, 추가 O, 제거 O, 키 중복 X, 중괄호 {} 이용하는, {key:value, ...} 형태의 자료 모음.

 

※ 주의

중복 key 불가. 참고.  

단, 중복 value 가능.

 


[예제]

 

hz ={

  "site": "홈짱닷컴",

  "host": "Homzzang.com",

  "open": 2012

}

print(hz)

 

결과값: {'site': '홈짱닷컴', 'host': 'Homzzang.com', 'open': 2012}

 

2.

요소 접근

1. [key] 이용해 접근.

 

hz ={

  "site": "홈짱닷컴",

  "host": "Homzzang.com",

  "open": 2012

}

x = hz['site']

print(x) # 홈짱닷컴

 


2. get() 메서드 이용해 접근.

 

hz ={

  "site": "홈짱닷컴",

  "host": "Homzzang.com",

  "open": 2012

}

x = hz.get('site')

print(x) # 홈짱닷컴

 

 

3. 

Value 변경

※ key 이용해 변경.

 

hz ={

  "site": "홈짱닷컴",

  "host": "Homzzang.com",

  "open": 2012

}

hz['open'] = 2020

print(hz)

 

반환값: {'site': '홈짱닷컴', 'host': 'Homzzang.com', 'open': 2020}

 

4. 

Dictionary 반복

1. for...in... 반복문 이용해 Key 출력.

 

hz ={

  "site": "홈짱닷컴",

  "host": "Homzzang.com",

  "open": 2012

}

for x in hz:

  print(x)

 

반환값:

site

host

open


2. for...in... 반복문 이용해 value 출력.

 

hz ={

  "site": "홈짱닷컴",

  "host": "Homzzang.com",

  "open": 2012

}

for x in hz:

  print(hz[x])

 

결과값:

홈짱닷컴

Homzzang.com

2012


3. values() 메서드 이용해 value 출력. 

(※ 주의: values 복수형임.)

 

hz ={

  "site": "홈짱닷컴",

  "host": "Homzzang.com",

  "open": 2012

}

for x in hz.values():

  print(x)

 

결과값:

홈짱닷컴

Homzzang.com

2012


4. items() 메서드 사용해 key와 value 모두 출력.

(※ 주의: items 복수형임.)

 

hz ={

  "site": "홈짱닷컴",

  "host": "Homzzang.com",

  "open": 2012

}

for x,y in hz.items():

  print(x, y)

 

반환값:

site 홈짱닷컴

host Homzzang.com

open 2012

 

5. 

Key 존재 체크

in 키워드 사용해 key 존재 여부 체크.

 

hz ={

  "site": "홈짱닷컴",

  "host": "Homzzang.com",

  "open": 2012

}

if "site" in hz:

  print("있음.")

 

결과값: 있음.


PS. in 키워드와 values() 메서드 결합해 value 존재 체크 가능.

 

hz ={

  "site": "홈짱닷컴",

  "host": "Homzzang.com",

  "open": 2012

}

if "홈짱닷컴" in hz.values():

  print("있음.")

 

결과값: 있음.

 

6. 

Dictionary 길이 (= 요소 개수)

len() 함수 사용해 Item 개수 셈.

 

hz ={

  "site": "홈짱닷컴",

  "host": "Homzzang.com",

  "open": 2012

}

print(len(hz))

 

결과값: 3

 

7. 

요소 추가

[방법1]

 

hz ={

  "site": "홈짱닷컴",

  "host": "Homzzang.com",

  "open": 2012

}

hz["intro"] = "코딩 강의"

print(hz)

 

결과값: 

{'site': '홈짱닷컴', 'host': 'Homzzang.com', 'open': 2012, 'intro': '코딩 강의'}


[방법2] dictionary.setdefault() 메서드 이용 ★

 

hz ={

  "site": "홈짱닷컴",

  "host": "Homzzang.com",

  "open": 2012

}

hz.setdefault('intro','코딩 강의')

print(hz)

 

결과값: 

{'site': '홈짱닷컴', 'host': 'Homzzang.com', 'open': 2012, 'intro': '코딩 강의'} 

 

8. 

요소 제거

1. pop() 메서드 - 지정 key를 가진 Item 제거.

 

hz ={

  "site": "홈짱닷컴",

  "host": "Homzzang.com",

  "open": 2012

}

hz.pop('open')

print(hz)

 

결과값: {'site': '홈짱닷컴', 'host': 'Homzzang.com'}


2. popitem() 메서드 - 마지막으로 삽입된 Item 제거.

cf. Python 3.7 이전 버전 경우, 랜덤으로 Item 제거.

 

hz ={

  "site": "홈짱닷컴",

  "host": "Homzzang.com",

  "open": 2012

}

hz.popitem()

print(hz)

 

결과값: {'site': '홈짱닷컴', 'host': 'Homzzang.com'}


3. del 키워드로 지정 key를 가진 Item 제거.

 

hz ={

  "site": "홈짱닷컴",

  "host": "Homzzang.com",

  "open": 2012

}

del hz['open']

print(hz)


결과값: {'site': '홈짱닷컴', 'host': 'Homzzang.com'}


4. del 키워드로 Dictionary 자체를 제거 가능.


hz ={

  "site": "홈짱닷컴",

  "host": "Homzzang.com",

  "open": 2012

}

del hz # 에러 유발.

print(hz)


결과값: 에러 발생.


5. clear() 메서드로 모든 Item 제거 가능. (= Dictionary 비우기)

※ 주의: Dictionary 자체는 존재함.

 

hz ={

  "site": "홈짱닷컴",

  "host": "Homzzang.com",

  "open": 2012

}

hz.clear()

print(hz)


결과값: {}

 

9. 

Dictionary 복사

주의: dict1 = dict2 방식으로는 복사 불가함.

∵ dict1은 dict2에 대한 참조일 뿐이며, dict2 변하면 dict1도 변함.


1. copy() 메서드로 복사.

 

hz ={

  "site": "홈짱닷컴",

  "host": "Homzzang.com",

  "open": 2012

}

my = hz.copy()

print(my)

 

결과값: 

{'site': '홈짱닷컴', 'host': 'Homzzang.com', 'open': 2012}


2. dict() 내장 함수로 복사.

 

hz ={

  "site": "홈짱닷컴",

  "host": "Homzzang.com",

  "open": 2012

}

my = dict(hz)

print(my)

 

결과값: 

{'site': '홈짱닷컴', 'host': 'Homzzang.com', 'open': 2012} 

 

10. 

안긴 Dictionary

1. Dictionary 안에 Dictionary를 직접 정의.

 

code = {

  "HTML" : {

    "role" : "뼈대",

    "read" : 1

  },

  "CSS" : {

    "role" : "디자인",

    "read" : 2

  },

  "JS" : {

    "role" : "기능",

    "read" : 3

  }

}

print(code)

 

결과값: 

{'HTML': {'role': '뼈대', 'read': 1}, 'CSS': {'role': '디자인', 'read': 2}, 'JS': {'role': '기능', 'read': 3}}


2. 기존 Dictionary를 Item으로 갖는 Dictionary 생성.

 

HTML = {

  "role" : "뼈대",

  "read" : 1

}

CSS = {

  "role" : "디자인",

  "read" : 2

}

JS = {

  "role" : "기능",

  "read" : 3

}


code = {

  "HTML" : HTML,

  "CSS" : CSS,

  "JS" : JS

}

print(code)

 

결과값:

{'HTML': {'role': '뼈대', 'read': 1}, 'CSS': {'role': '디자인', 'read': 2}, 'JS': {'role': '기능', 'read': 3}}

 

11. 

dict() 생성자

dict() 생성자 사용해 Dictionary 생성 가능.

주의1: Key는 문자열이 아님. 즉, 따옴표 안 붙임.

주의2: Key에 Value 할당은 = 기호 사용. (즉, : 기호 아님 명심.)

 

hz = dict(site="홈짱닷컴", host="Homzzang.com", open=2012)

print(hz)

 

결과값:

{'site': '홈짱닷컴', 'host': 'Homzzang.com', 'open': 2012}

 

12. 

Dictionary 메서드 종류

 

dictionary.clear()

Dictionary에서 모든 Item 제거.

 

dictionary.copy()

Dictionary의 복사본 반환.

 

dict.fromkeys()

지정된 Key와 Value 있는 Dictionary 반환.

 

dictionary.get()

지정된 Key의 Value 반환.

 

dictionary.items()

각 Key-Value 쌍에 대한 Tuple을 포함하는 Dictionary 반환.

 

dictionary.keys()

Dictionary의 Key를 포함하는 List 반환.

 

dictionary.pop()

지정된 Key가 있는 Item 제거.

 

dictionary.popitem()

마지막으로 삽입된 Key-Value 쌍을 제거.

 

dictionary.setdefault() ★

지정 Key의 Value 반환. 

※ 지정 Key 없는 경우, 지정 key:Value 요소 추가.

 

dictionary.update()

지정된 Key-Value 쌍으로 Dictionary 업데이트.

 

dictionary.values()

Dictionary에 있는 모든 Value의 List 반환.

 

PS1. dictionary 부분엔 Dictionary 자료형 변수 입력.

PS2. dict.fromkeys() 경우엔 반드시 dict 입력해야 함.


오늘도 즐겁게 열심히 .....

찾아주셔서 감사합니다. Since 2012