딕셔너리 자료형이 뭐야?

SOCICAL·2025년 1월 5일
0
# 최근 수정 날짜: 2025-01-05

딕셔너리

  • 대응 관계를 나타내는 자료형
  • 연관 배열 또는 해시라고도 불림.

즉, people(Key) 이라는 단어에 사람(Value) 또는 baseball(Key) 이라는 단어에 야구(Value)라는 뜻이 부합되는 것처럼 Key와 Value를 한 쌍으로 가지는 자료형이라는 말이다.

딕셔너리는 순차적으로 해당 요솟값을 구하지 않고 Key를 통해 Value를 얻는 가장 큰 장점을 가지고 있다. 즉, 순차적으로 모두 검색하는게 아닌 baseball이라는 단어가 있는 곳만 본다는 것이다.

# 기본 모습

{Key1: Value1, Key2: Value2,Key3: Value3, ...}

# exam
>>> dic = {'people': '사람', 'baseball': '야구'}

위와 같이 Key와 Value의 쌍 여러 개가 {}로 둘러싸여 있고 쉼표(,)로 구분되어 있다.

또한 다음 예시처럼 Value에 리스트를 넣을 수도 있다.

# exam
>>> a = {'a': [1,2,3]}

# 딕셔너리 쌍 추가 && 삭제

* 딕셔너리 쌍 추가하기
>>> a = {1: 'a'}
>>> a[2] = 'b'
>>> print(a)

# Output
{1: 'a', 2: 'b'}

{1:'a'} 딕셔너리에 a[2] = 'b'와 같이 입력하면 딕셔너리 a에 Key와 Value가 각 2와 'b'인 {2:'b'} 딕셔너리 쌍이 추가된다.

>>> a['name'] = 'pey'
>>> print(a)

# Output
{1: 'a', 2: 'b', 'name': 'pey'}

다음과 같이 딕셔너리 a에 {'name':'pey'}쌍이 추가되었다.

* 딕셔너리 요소 삭제
>>> del a[1]
>>> print(a)

# Output
{2: 'b', 'name': 'pey'}

딕셔너리 요소 중 1을 지워진 것처럼 del a[key]를 입력하면 지정한 Key에 해당하는 {key:Value} 쌍이 삭제 된다.

# 딕셔너리 사용 시 주의 사항

  • 딕셔너리에서 Key 값이 중복이 되면 안되며, 만약 중복일 경우 최후에 해당되는 Key에 해당하는 Value 를 제외하고 모두 무시하게 된다는 점이다.
		>>> a = {1:'a', 1:'b'}
		>>> print(a)

		# Output
		{1: 'b'}

다음과 같이 출력이 되는데, 이것은 Key를 통해서 Value를 얻는 딕셔너리의 특징 때문이다.

  • Key에 리스트를 쓸 수 없다. 딕셔너리의 Key는 immutable 즉, 변하지 않는 값들만 넣을 수 있게 때문에 값이 변할 수 있는 리스트는 Key로 쓸 수 없다.

# 딕셔너리 관련 함수

* Key 리스트 만들기 - keys
>>> a = {'name': 'pey', 'phone': '010-9999-1234', 'birth': '1118'}
>>> print(a.keys())

# Output
dict_keys(['name', 'phone', 'birth'])

2.7 버전까지만 해도 a.keys() 메서드를 호출하면 dict_keys가 아닌 리스트를 리턴했었는데, 이로인해 메모리 낭비(Memory Leak)가 발생했는데, 3.0 버전 이후 부터는 dict_keys의 객체를 리턴하도록 변경되었다.

# 만약 객체가 아닌 리스트로 리턴 받고 싶을 경우
>>> print(list(a.keys()))
['name', 'phone', 'birth']
* Value 리스트 만들기 - values
>>> print(a.values())

# Output
dict_values(['pey', '010-9999-1234', '1118'])

Key를 얻는 것과 같은 방법으로 Value만 얻고 싶다면 values 메서드를 사용 하면 된다. values 함수를 호출하면 dict_values 객체를 리턴한다.

* Key, Value 쌍 얻기 - items
>>> print(a.items())

# Output
dict_items([('name', 'pey'), ('phone', '010-9999-1234'), ('birth', '1118')])

items 메서드는 Key와 Value의 쌍을 dict_items 객체로 리턴한다.

* Key: Value 쌍 모두 지우기 - clear
>>> a.clear()
>>> a
{}
* Key로 Value 얻기 - get
>>> a = {'name':'pey', 'phone':'010-9999-1234', 'birth': '1118'}
>>> print(a.get('nokey'))

# Output
None # 거짓이라는 뜻이라고 이해하면 된다.
----------------------------------
----------------------------------
>>> print(a['nokey’])

# Output
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'nokey'
----------------------------------
----------------------------------
>>> print(a.get('nokey', 'foo'))

# Output
'foo'
>>> a = {'name':'pey', 'phone':'010-9999-1234', 'birth': '1118'}
>>> print('name' in a)

# Output
True
----------------------------------
>>> print('email' in a)

# Output
False

'name'문자열은 a 딕셔너리의 Key 중 하나이기에 True로 나온 것이며, 'email'문자열은 a 딕셔너리의 Key 로 존재하지 않기에 False가 출력이 된 것이다.

0개의 댓글