요새 자주 공부를 못하고있는것 같다. 심히 반성중이다. 하지만 조금이라도 공부한 내용은 올려야한다.
오늘은 사전(dictionary)에 대해서 알아보도록 하자.
사전(dict)의 특징
dict는 기존의 배열과 다르게 순서가 정해져 있지 않다.
이는 즉 index를 통한 호출이 불가능 하다는 것이다.
사전은
ex_dict = {'name': '응애', 'job': '개발자', 'age': '28'}
위와 같은 형태를 취하고 있으며
dict = {'key1' : 'value1', 'key2' : 'value2', ... }
의 형식으로 key : value 로 쌍을 이루고 있다.
즉 삽입, 수정, 삭제 등을 실행할 때 항상 key값과 value값이 동반된 형태로 움직인다.
또한, 데이터 입력에는 특별한 제약이 없다. 즉 입력된 값에 숫자, 문자 외에도 리스트와 같은 배열 객체도 저장 가능하다.
요약하자면
- 순서없이 저장된다. -> 인덱스 호출 불가능 --> key값을 통한 접근
- key값은 중복 불가, 입력은 가능하나 기존값 변경
- value는 중복 가능, 변경도 가능
- 데이터 입력을 숫자, 문자 외에도 리스트와 같은 배열 객체로도 입력 가능
1. dict 선언 하는 방법
선언 하는 방법은 앞서 자주 사용했던 list와 비슷하다.
#1. 선언
dict_ = {}
dict() 함수를 사용해서 선언하거나, { }만을 사용하여 빈 값을 선언할 수 있다.
2. 데이터 입력
앞서 언급했듯 dict는 순서가 없고, index도 지정되어 있지 않다. 그리고 key와 value를 통해서 접근이 가능하다.
list의 경우에는 입력한 순서에 따라 자동으로 list[0], list[1], list[2] ... 등 자동으로 호출할 수 있는 방법이 제공 되었지만
dict는 직접 정의해 주어야 한다.
#1. 선언
dict_ = {}
#2. 데이터 입력
dict_['id'] = 'hong'
dict_['name'] = '홍길동'
dict_['age'] = 20
dict_['address'] = '서울'
print(dict_)
#{'id': 'hong', 'name': '홍길동', 'age': 20, 'address': '서울'}
print(dict_['name'])
#홍길동
우선 dict_ = { } 로 빈 값을 선언해 준 후
dict_['넣고 싶은 key 값'] = '넣고 싶은 value 값'
위의 방식으로 데이터를 입력 할 수 있다.
dict 전체 출력은 단순하게 해당 dict 값을 print( )안에 넣어주면 되고
key값을 이용해 특정 value값을 호출하고 싶다면
print( dict_['key'] )
위의 방법을 사용해 읽을 수 있다.
3. 반복문을 이용한 출력 - key
반복문을 이용해 key값만 따로 출력할 수 있다.
#3. 반복문을 이용한 출력 - key
for i in dict_.keys():
print(i, end=' ')
#id name age address
for문을 선언해 주고 in 뒤에 dict_.keys() 를 선언하여 사용하면 된다.
주의할 점이 반드시 선언한 dict와 keys() 사이에 . 을 빼먹지 말아야 하며
나같은 파이썬 초보면서 ide를 사용하면
이렇게 추천된 기능을 아무 생각 없이 눌러서 사용하게 될 탠데
저걸 사용하게 되면
dict_.keys 만 입력이 되며 뒤에 ()까지 붙여주진 않는다.
나는 처음에 ()를 빼먹고 써서 어디서 오류가 난줄도 몰랏기 때문에 주의해야 한다.
4. 반복문을 이용한 출력 - value
위와 방법은 동일하다.
#4. 반복문을 이용한 출력 - value
for i in dict_.values():
print(i, end=' ')
#hong 홍길동 20 서울
선언한 dict 뒤에 .values() 를 사용하면
for문에서 선언한 i 값을 통해 value값만 쭉 출력이 된다.
5. 반복문을 이용해 key, value 쌍으로 출력 -> tuple 형
위의 방법을 사용해 key와 value값 둘을 동시해 출력하는 방법이 있다.
key와 value는 항상 쌍을 이루기 때문에 같이 출력할 수 있는것이다.
단 동시에 출력하고자 하면 값의 타입은 tuple 형으로 출력이 된다.
#5. key, value 쌍으로 출력 -> tuple형
for i in dict_.items():
print(i, end=' ')
#('id', 'hong') ('name', '홍길동') ('age', 20) ('address', '서울')
위와 동일한 방법으로 선언한 dict 뒤에 .items() 를 사용하면 된다.
6. 빈 dict선언, 초기화
앞서 1번 항목에서 언급했듯이 dict() 함수를 사용하거나, { }만 이용하여 초기화가 가능하다.
#6. 빈 dict 선언하기
a = dict()
b = {}
#두 방법 다 동일
7. 가독성 좋은 선언 방법
2번 방법인 dict_['name'] = 'hong' 이 방법은 굉장히 손이 많이가고 불편하다.
보기도 좋고 쓰기도 편한 초기 선언 방법이 있다.
#7. 가독성
dict1 = {
'name': '홍길동',
'id': 'gdhong',
'age': 20
}
아마 처음부터 이런방법을 알려주면 더 좋겠지만뭐.. 배우는중이니까
8. 중첩 dict ( Nested Dictionary )
맨 위의 dict의 특징에서 가장 마지막 특징인
- 데이터 입력을 숫자, 문자 외에도 리스트와 같은 배열 객체로도 입력 가능
해당 부분을 이용한 방법이다.
#8. 중첩 dict ( Nested Dictionary)
dict2 = {
'name' : '을지문덕',
'age': 30,
'pastime': {
'reading': 30,
'walking': 60
}
}
print('dict2 - ', dict2)
#dict2 - {'name': '을지문덕', 'age': 30, 'pastime': {'reading': 30, 'walking': 60}}
사용법이나 접근방법 등이 list와 유사하다.
dict2 내부에 'pastime' 이라는 중첩 사전을 추가 하였다.
print(dict2) 를 이용해 전체를 출력하자
사전 안에 사전이 있는것을 확인 가능하다.
그럼
???: 사전안에 사전은 어떻게 접근해요?
초 간단데스
print('nested dict - ', dict2['pastime'])
#nested dict - {'reading': 30, 'walking': 60}
print('nested dict get value - ', dict2['pastime']['walking'])
#nested dict get value - 60
선언하고 또 선언하면 된다.
9. 삽입, 수정, 삭제
삽입 수정 삭제는 이쯤되면 다들 어떻게 해야할지 알 거라 생각한다.
#9. 삽입, 수정, 삭제
dict3 = {
'name' : '홍길동',
'id' : 'gdhong'
}
print('9-1 최초 - ', dict3)
#9-1 최초 - {'name': '홍길동', 'id': 'gdhong'}
dict3['age'] = 22 #삽입
print('9-2 삽입 - ', dict3)
#9-2 삽입 - {'name': '홍길동', 'id': 'gdhong', 'age': 22}
dict3['age'] = 33
print('9-3 수정 - ', dict3)
#9-3 수정 - {'name': '홍길동', 'id': 'gdhong', 'age': 33}
del dict3['age']
print('9-4 삭제 - ', dict3)
#9-4 삭제 - {'name': '홍길동', 'id': 'gdhong'}
- 삽입: 선언한 사전에 새로운 key값과 같이 새로운 값을 선언해준다
- 수정: 이미 선언된 key값을 불러서 값을 새로 선언한다. 그럼 value가 수정된다
- 삭제: del 과 key 를 이용해 삭제한다.
끝.
'Language > Python' 카테고리의 다른 글
[Python] 함수(2) / 예제로 공부하는 Python 100 문제풀이 (0) | 2022.05.09 |
---|---|
[Python] 함수(1) / 예제로 공부하는 Python 100 문제풀이 (0) | 2022.02.24 |
[Python] 리스트 comprehension (2)/ 예제로 공부하는 Python 100 문제풀이 (0) | 2022.02.17 |
[Python] 리스트 comprehension (1)/ 예제로 공부하는 Python 100 문제풀이 (0) | 2022.02.17 |
[Python] 리스트 (2) / 추가, 수정, 삭제, 병합, 인덱스, 중복 제거/ 예제로 공부하는 Python 100 문제풀이 (0) | 2022.02.09 |
댓글