Language/Python

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

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

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

 

오늘은 사전(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

 

반응형