파이썬(Python)

Dictionary 자료

BlueNoa 2021. 6. 9. 02:42
728x90
반응형

· Dictionary

Dictionary는 '사전'이라는 뜻을 갖고 있다. 우리가 흔히 접하는 한글 사전이나 영어 사전 등을 보면 책의 우측에 보면 가~힣, 혹은 A~Z 까지 순서대로 정렬되어 있는 것을 볼 수 있다. 마찬가지로 파이썬에서도 이런 식의 표현을 구현하여 

'key''value'한 쌍이 되어 자료를 구성하는 형태를 Dict타입의 자료라고 한다.

 

간단하게 이름과 생일 날짜가 있다고 가정하면, {'김민수':0223}이라고 하면 김민수를 입력하면 2023이라는 데이터가 출력 된다고 이해하면 된다.

즉, 대응관계를 나타내는 자료형이다. 이러한 자료형을 연관 배열(Associative array) 또는 해시(Hash)라고 한다.

자료 구성은 위의 예시를 들어 '이름'이라는 key와 '생일'이라는 value가 존재하는 것이다.

key값은 중복할 수 없지만 value는 중복을 허용한다.

또, 자료가 순서성을 갖고 있지 않아서 인덱싱이나 슬라이싱이 불가능하다.

[자료의 순서성이란? - 인덱싱과 슬라이싱 그리고 포매팅] - 이전 내용

· Dictionary의 자료 입력과 특성

<예제>

# dict타입 자료를 만드는 방법1 : dict()를 사용한다.
a_dict = dict(n1 = 1, n2 = 2, n3 = 'abcd', n4 = 3.14)
# 단, value가 문자일 경우에는 꼭 '' 혹은 ""으로 구분을 지어줘야 한다.
print(a_dict)

# dict타입 자료를 만드는 방법2 : {} 중괄호로 묶어서 만들어준다.
b_dict = {'a':123, 'b':[1, 3, 5]} # list 타입도 value로 넣을 수 있다.
print(b_dict)

<결과>

{'n1': 1, 'n2': 2, 'n3': 'abcd', 'n4': 3.14}
{'a': 123, 'b': [1, 3, 5]}

 

· Dictionary 자료 추가, 삭제

1. 딕셔너리 쌍 추가

<예제>

c_dict = {1:'name', 2:'id', 3:'pw'}
c_dict[4] = 'gen'
c_dict[5] = ['010-2222-3232'] # list도 추가해줄 수 있다.
print(c_dict)

<결과>

{'n1': 1, 'n2': 2, 'n3': 'abcd', 'n4': 3.14}
{'a': 123, 'b': [1, 3, 5]}
{1: 'name', 2: 'id', 3: 'pw', 4: 'gen', 5: ['010-2222-3232']}

 

2. 딕셔너리 요소 삭제하기

<예제>

del c_dict[1] # key값을 넣는다.
print(c_dict)
print(c_dict[3]) # key값을 입력해서 value를 출력할 수 있다.

<결과>

{2: 'id', 3: 'pw', 4: 'gen', 5: ['010-2222-3232']}
pw

중복 key값이 있으면 가장 마지막에 입력한 값이 출력 된다. 그리고 key값을 list 타입으로 지정하면 문법 오류가 난다.

 

· Dictionary 함수

(1) ​keys - Key로만 구성된 값 출력

<예제>

d_dict = {'삼성':'갤럭시', '애플':'아이폰', '엘지':'벨벳', '소니':'엑스페리아'}
d_key = list(d_dict.keys()) # key값들을 list에 담아서 저장한다.
print(d_key)

<결과>

['삼성', '애플', '엘지', '소니']

 

(2) values - value로만 구성된 값 출력 

<예제>

d_dict = {'삼성':'갤럭시', '애플':'아이폰', '엘지':'벨벳', '소니':'엑스페리아'}
d_value = list(d_dict.values())
print(d_value)

<결과>

['갤럭시', '아이폰', '벨벳', '엑스페리아']

 

(3) items - key와 value 동시에 출력하기

<예제>

d_dict = {'삼성':'갤럭시', '애플':'아이폰', '엘지':'벨벳', '소니':'엑스페리아'}
d_item = list(d_dict.items())
print(d_item)

<결과>

[('삼성', '갤럭시'), ('애플', '아이폰'), ('엘지', '벨벳'), ('소니', '엑스페리아')]

 

(4) clear - Key : Value 쌍 모두 지우기

<예제>

d_dict = {'삼성':'갤럭시', '애플':'아이폰', '엘지':'벨벳', '소니':'엑스페리아'}
d_clear = d_dict.clear()
print(d_clear)

<결과>

None

 

 

(5) get - key로 value 가져오기

<예제>

d_dict = {'삼성':'갤럭시', '애플':'아이폰', '엘지':'벨벳', '소니':'엑스페리아'}
d_get = d_dict.get('애플')
print(d_get)
d_get2 = d_dict.get('노키아', '그런거 없다') # 자료에 없는 key값을 입력했을 때 출력할 default값을 지정할 수 있다.
print(d_get2)

<결과>

아이폰
그런거 없다

key값이 없는 경우 none값이 출력된다. 이럴 경우 디폴트값을 지정해두면 지정 된 값이 나오게 된다.

 

 

(6) in - 해당 Key가 딕셔너리 안에 있는지 조사하기

<예제>

d_dict = {'삼성':'갤럭시', '애플':'아이폰', '엘지':'벨벳', '소니':'엑스페리아'}
print('삼성' in d_dict)
print('htc' in d_dict)

<결과>

True
False

​자료에 '삼성'이 존재하기 때문에 True가 출력되었고, 'htc'는 없기 때문에 False가 출력되었다.

 

728x90
반응형

'파이썬(Python)' 카테고리의 다른 글

If문 - 조건문  (0) 2021.06.09
Set 자료  (0) 2021.06.09
Tuple 자료  (0) 2021.06.06
List 자료형과 id()를 통한 변수 복사의 차이  (0) 2021.06.06
문자열과 관련된 함수  (0) 2021.06.05