본문 바로가기
Language/Python

[Python] dict, 사전, 삽입, 수정, 삭제 / 예제로 공부하는 Python 100 문제풀이

by 애기 개발자 2022. 2. 22.
반응형

요새 자주 공부를 못하고있는것 같다. 심히 반성중이다. 하지만 조금이라도 공부한 내용은 올려야한다.

 

오늘은 사전(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가 수정된다
  • 삭제: delkey 를 이용해 삭제한다.

끝.

 

Git - 18 dict 삽입, 수정, 삭제.py

 

GitHub - Kim-myoung-jun/Python-Practice

Contribute to Kim-myoung-jun/Python-Practice development by creating an account on GitHub.

github.com

 

반응형

댓글