파이썬 자료형 (딕셔너리)

윤태영·2023년 11월 7일
0
post-thumbnail

이미지 출처: https://wikidocs.net/192339

딕셔너리 사전형태의 자료구조를 알아보자.

딕셔너리 사용법

  • 딕셔너리 선언
  • 딕셔너리 특징
  • 딕셔너리 수정
  • 딕셔너리 함수
  • 딕셔너리 중요성

파이썬의 딕셔너리(Dictionary)는 키(key)와 값(value)의 쌍으로 구성된 컬렉션입니다. 딕셔너리는 가변적이며(mutable), 키의 유일성과 순서 없음(unordered)이라는 특징을 가지고 있습니다. 사전형태는 실무나 웹, 어플리케이션을 개발할때 가장 많이 사용된다고 한다.😁 어렵지 않으니 코드를 보면서 천천히 이해해보자.

딕셔너리 선언 📕

  • 범용적으로 가장 많이 사용
  • 딕셔너리 자료형(순서X, 키 중복X, 수정O, 삭제O)
  • 여러가지 방법으로 딕셔너리 선언가능
a = {'Name' : 'Kim','phone' : '01033337777', 'birth' : '990620'} # Key와 value로 이루어짐
b = {0 : 'Hello Python'}
c ={'arr' :[1, 2, 3, 4]}
d = {
    'Name' : 'Messi',
    'City' : 'Paris',
    'Age'  : 35,
    'Grade' : 'S',
    'Status': True
}  # 데이터가 많을때는 이렇게 하면 보기 편하다.
e = dict([
    ('Name', 'Messi'),
    ('City', 'Paris'), 
    ('Age', 35),
    ('Grade', 'S'),
    ( 'Status', True),  # 콜론도 튜플에서는 콤마
]) # 리스트의 튜플 형태로 선언하는데 보통 이방법은 사용x
f = dict(
    Name='Messi',
    City='Paris',
    Age=35,
    Grade='S',
    Status=True
) # 위에것을 개선한것, e보다 f방식이 훨씬 편하다. 저는 주로 f방식이나 d방식을 사용하고 짧을경우 처음방식을 사용합니다.
print('a - ',type(a), a)
a -  <class 'dict'> {'Name': 'Kim', 'phone': '01033337777', 'birth': '990620'}
print('b - ',type(b), b)
>>> b -  <class 'dict'> {0: 'Hello Python'}
print('c - ',type(c), c)
>>> c -  <class 'dict'> {'arr': [1, 2, 3, 4]}
print('d - ',type(d), a)
>>> d -  <class 'dict'> {'Name': 'Kim', 'phone': '01033337777', 'birth': '990620'}
print('e - ',type(e), e)
>>> e -  <class 'dict'> {'Name': 'Messi', 'City': 'Paris', 'Age': 35, 'Grade': 'S', 'Status': True}
print('f - ',type(f), f)
>>> f -  <class 'dict'> {'Name': 'Messi', 'City': 'Paris', 'Age': 35, 'Grade': 'S', 'Status': True}

딕셔너리 출력 📕

딕셔너리의 key값을 이용해서 값을 출력해보자

a = {'Name' : 'Kim','phone' : '01033337777', 'birth' : '990620'} 
b = {0 : 'Hello Python'}
c ={'arr' :[1, 2, 3, 4]}
f = dict(
    Name='Messi',
    City='Paris',
    Age=35,
    Grade='S',
    Status=True
) 
print('a - ', a['name1']) # Key 존재x -> 에러발생
>>> KeyError: 'name1'
print('a - ', a.get('name1')) # get으로 할때 키가없는 경우에는 오류가 아니라 None 으로 나온다. 안정적 개발 가능
>>> a -  None
print('b - ', b[0]) # get을 이용해서 값을 가져올때와 같다.
>>> b -  Hello Python
print('b - ', b.get(0)) 
>>> b -  Hello Python
print('c - ', c['arr'])
>>> c -  [1, 2, 3, 4]
print('c  -', c.get('arr'))
>>> c -  [1, 2, 3, 4]
print('f - ', f.get('City'))
>>> f -  Paris
print('f - ', f.get('Age'))
>>> f -  35

딕셔너리 추가 📕

a[key] = 'values'
추가하고싶은 key값과 value 값을 위와같이 하면 딕셔너리가 추가된다.

a = {'Name' : 'Kim','phone' : '01033337777', 'birth' : '990620'} 
a['address'] = 'seoul'
print('a - ', a)
>>> a -  {'Name': 'Kim', 'phone': '01033337777', 'birth': '990620', 'address': 'seoul'}
a['rank'] = [1,2,3]
print('a - ', a)
>>> a -  {'Name': 'Kim', 'phone': '01033337777', 'birth': '990620', 'address': 'seoul', 'rank': [1, 2, 3]} # 마지막 부분에 딕셔너리가 추가되었다.

딕셔너리 길이 📕

딕셔너리의 길이는 키의 갯수를 의미한다.

a = {'Name' : 'Kim','phone' : '01033337777', 'birth' : '990620'} 
b = {0 : 'Hello Python'}
c ={'arr' :[1, 2, 3, 4]}
d = {
    'Name' : 'Messi',
    'City' : 'Paris',
    'Age'  : 35,
    'Grade' : 'S',
    'Status': True
}
print('a - ', len(a)) # 키의 갯수
>>> a -  3
print('b - ', len(b))
>>> b - 1
print('c - ', len(c))
>>> c - 1
print('d - ', len(d))
>>> d - 5

dict_keys, dict_values, dict_items : 반복문(iter)에서 사용 가능 📕

a = {'Name' : 'Kim','phone' : '01033337777', 'birth' : '990620'} 
b = {0 : 'Hello Python'}
c ={'arr' :[1, 2, 3, 4]}
d = {
    'Name' : 'Messi',
    'City' : 'Paris',
    'Age'  : 35,
    'Grade' : 'S',
    'Status': True
}
# key값들만 가져온다.
print('a - ', a.keys())
>>> a -  dict_keys(['Name', 'phone', 'birth'])
print('b - ', b.keys())
>>> b -  dict_keys([0])
print('c - ', c.keys())
>>> c -  dict_keys(['arr'])
print('d - ', d.keys())
>>> d -  dict_keys(['Name', 'City', 'Age', 'Grade', 'Status'])
--------------------------------------------------------------
# 리스트로 형변환하면 더편하게 확인가능
print('a - ', list(a.keys()))
>> a -  ['Name', 'phone', 'birth']
print('b - ', list(b.keys()))
>> b - [0]
--------------------------------------------------------------
# value값들만 가져온다.
print('a - ', a.values())
>>> a -  dict_values(['Kim', '01033337777', '990620'])
print('b - ', b.values())
>>> b -  dict_values(['Hello Python'])
print('c - ', c.values())
>>> c -  dict_values([[1, 2, 3, 4]])
--------------------------------------------------------------
print('a - ', list(a.values())) 
>>> a -  ['Kim', '01033337777', '990620']
print('b - ', list(b.values()))
>>> b -  ['Hello Python']
--------------------------------------------------------------
# key와 value를 모두 가져온다. 리스트로 둘러싸여서 하나의 튜플형태로 출력
# 딕셔너리 선언 e의 형태로 나온다.
print('a - ', a.items())
>>> a -  dict_items([('Name', 'Kim'), ('phone', '01033337777'), ('birth', '990620')]) 
print('b - ', b.items()) 
>>> b -  dict_items([(0, 'Hello Python')])
print('c - ', c.items())
>>> c -  dict_items([('arr', [1, 2, 3, 4])])
--------------------------------------------------------------
# 딕셔너리를 e에서 선언했을때 리스트안에 튜플형태로 선언한 값그대로 반환, 형 변환하면 처음 선했을때 키와 벨류를 튜플형태로 리스트로 변환해서 출력 
print('a - ', list(a.items())) 
>>> a -  [('Name', 'Kim'), ('phone', '01033337777'), ('birth', '990620')]
print('b - ', list(b.items()))
>>> b -  [(0, 'Hello Python')]
--------------------------------------------------------------
# 딕셔너리에서 pop 메서드는 특정 키와 그에 해당하는 값을 딕셔너리에서 제거하면서 그 값을 반환하는 데 사용
print('a - ', a.pop('Name'))
>>> a -  Kim
print('a - ', a)
>>> a -  {'phone': '01033337777', 'birth': '990620'}
print('c - ', c.pop('arr'))
>>> c -  [1, 2, 3, 4]
print('c - ', c)
>>> c -  {}
--------------------------------------------------------------
"""popitem()은 파이썬 3.7 이전 버전은 임의로(랜덤으로) 가져왔지만,
python 3.7 버전 이후로는 마지막에 추가된 순서로 꺼내지는거라고 합니다. (LIFO : last in first out)
즉, pop()과 같다고 보면 될 것 같습니다."""
print('f - ', f.popitem()) 
>>> f -  ('Status', True)
print('f - ', f) # Status가 사라진것을 알 수 있다.
>>> f -  {'Name': 'Messi', 'City': 'Paris', 'Age': 35, 'Grade': 'S'}
--------------------------------------------------------------
# in 연산자로 키 조회가능
print('a - ', 'birth' in a) 
>>> a -  True
print('b - ', 'City' in b)
>>>  b -  False

딕셔너리 수정 📕

a[key] = 'new_values'
기존의 key값에 새로운 values를 넣어주면된다.

a = {'Name' : 'Kim','address' : 'seoul', 'phone' : '01033337777', 'birth' : '990620'} 
a['address'] = 'busan'
print('a - ', a)
>>> a -  {'Name': 'Kim', 'address': 'busan', 'phone': '01033337777', 'birth': '990620'}
--------------------------------------------------------------
# 다른수정 방법
a.update(birth = '910904')  
print('a - ', a)
>>>> a -  {'Name': 'Kim', 'address': 'busan', 'phone': '01033337777', 'birth': '910904'}

내용이 상당히 많은데 어렵지 않으니 복습하면 쉬워질것이다.
다음에는 마지막 자료구조형인 집합을 알아보자.!!🙂

출처 : 인프런

profile
ice blue

0개의 댓글