본문 바로가기
코딩 이야기/파이썬(Python)

단도직입 파이썬(Python) 기초 – 4 자료형(딕셔너리, 집합)

by 아재코더 2021. 12. 15.
파이썬 기초 - 자료형(딕셔너리, 셋)

오늘은 Python의 자료형 중 딕셔너리(dictionary), 집합(set)에 대해 알아봅니다. 딕셔너리는 리스트나 튜플처럼 순차적으로 해당 value를 구하지 않고 Key를 통해 value를 얻는 게 특징입니다. 예를 들면 { key1:value1, key2:value2, key3:value3 }와 같이 key:value가 { }에 둘러싸여 key에는 상수, value에는 변수 또는 상수가 들어갑니다.

>>> dic = { 'name' : 'baik', 'phone' : 0174343212, 'birth' : 0814 }
Key
Value
name
baik
phone
0174343212
birth
0814

딕셔너리에서는 key를 정수값으로, Value는 문자나 리스트도 넣을 수 있습니다.

>>> a = { 1 : ‘hi’, 2: [1,2,3] }

딕셔너리에서 쌍을 추가, 삭제하는 방법은 아래와 같습니다.

딕셔너리 추가 또는 삭제

딕셔너리 key를 이용하여 쌍을 추가하거나 삭제 가능한 것을 볼 수 있습니다. 다른 언어에서 파이썬의 딕셔너리 자료형을 구현하려면 배열, 조건문, 반복문을 모두 사용해야는데, 파이썬은 상당히 직관적입니다.

 
Key는 문자나 숫자 사용에 제약 없이 Value를 불러올 수 있습니다. 여기서 a[2]는 리스트/튜플에서 a[2]와는 전혀 다른 의미입니다. 딕셔너리 2는 key를 뜻하며, 리스트/튜플은 index를 뜻합니다.
 
딕셔너리 사용에 있어 주의할 점은 key가 둘 이상 중복되면 하나의 key만 인식하게 됩니다.. 아래 결과처럼!
 
그리고 당연하겠지만 key에는 리스트를 사용할 수 없습니다.

 

딕셔너리 함수에 대해 알아봅니다.

keys()
a.keys()는 딕셔너리 a의 key를 모아서 disc_keys로 반환
>>> a = {'name' : 'baik', 'phone' : '017-434-3212', 'birth' : '0814' }
>>> a.keys()
dict_keys(['name', 'phone', 'birth'])
 
values()
a.values()는 딕셔너리 a의 value를 모아서 disc_values로 반환
>>> a.values()
dict_values(['baik', '017-434-3212', '0814'])
 
items()
a.items()는 딕셔너리 a의 key, value를 튜플로 묶어 모아서 disc_items로 반환
>>> a.items()
dict_items([('name' , 'baik'), ('phone' , '017-434-3212'), ('birth' , '0814')])

list(a.keys()), list(a.values()), list(a.items()) 와 같이 list() 함수를 사용하면 리스트 자료형으로 변환됩니다.

딕셔너리 내 Key:value를 모두 지울 때 clear() 함수를 사용합니다.

>>> a.clear()

>>> a

{}

Key로 value를 얻을 때 gat()를 사용할 수 있습니다. 하지만 get() 함수는 찾고자 하는 key가 없을 때 “none”을 반환하는 반면, a[‘nokey’]로 호출했을 때 찾고자 하는 key가 없다면 error를 발생합니다. Error 발생 시 처리 방법은 다를 수 있지만 분명 차이는 있겠죠? 딕셔너리 안에 찾으려는 key가 없을 때 get(x,’default value’) 형태로 디폴트 값을 임의 지정할 수 있습니다.

해당 key가 딕셔너리 안에 있는지 조사할 수도 있습니다.

>>> ‘xxxx’ in a

‘xxxx’가 a 딕셔너리 안에 있다면 True를 반환, 없다면 False를 반환! 합니다. 당연하고 직관적입니다. (Python의 장점이자 한편으로는 단점일 수도 있겠죠?! 이러한 이유로 타 프로그래밍 언어보다 느리게 실행되는 이유일 수도 있기 때문에... 지극히 제 뇌피셜입니다.)

리스트는 [ ], 튜플은 ( ), 딕셔너리는 { }처럼 괄호의 모양에 따라 전혀 다른 자료형을 나타내는 점 유의하세요~!

이번엔 집합(set)과 논리형(Boolean) 자료형에 대해 알아봅니다.

>>> s = set( [1, 2, 2, 3] )

>>> s

{1, 2, 3}

집합은 set ()을 이용하여 생성하며, 중복을 허용하지 않고, 순서도 없습니다. 그래서 index를 사용하려면 list( ) 함수를 사용해야 합니다.

>>> s1 = set ( [ 1, 2, 3, 4, 5 ] )
>>> s2 = set ( [ 4, 5, 6, 7, 8 ] )
교집합
( & or intersection() )
합집합
( | or union() )
차집합
( - or difference() )
>>> s1 & s2
{ 4, 5 }
>>> s1.intersection(s2)
{ 4, 5 }







>>> s1 | s2
{ 1, 2, 3, 4, 5, 6, 7, 8 }
>>> s1.union(s2)
{ 1, 2, 3, 4, 5, 6, 7, 8 }







>>> s1 - s2
{ 1, 2, 3 }
>>> s1.difference(s2)
{ 1, 2, 3 }
>>> s2 - s1
{ 8, 6, 7 }
>>> s2.difference(s1)
{ 8, 6, 7 }

 

집합 자료형 관련 함수

>>> s1 = set([ 1, 2, 3 ])
값 1개 추가 : add( )
값 여러 개 추가 : update( )
특정 값 제거 : remove( )
>>> s1 = add(4)
>>> s1
{1, 2, 3, 4}
>>> s1.update([ 4, 5, 6])
>>> s1
{1, 2, 3, 4, 5, 6}
>>> s1. remove(2)
>>> s1
{1, 3}

 

논리(bool) 자료형은 참(True)과 거짓(False) 단 2가지를 나타냅니다. (True, False는 파이썬의 예약어로 반드시 첫 문자는 대문자로 사용해야 합니다.)

>>> 1 == 1

True

>>> 2 > 1

True

>>> 2 < 1

False

단순하지만 조건문, 반복문에서 자주 사용되는 자료형입니다.

 

자료형에 있어 참과 거짓의 기준은 다음과 같습니다.

자료형
(Type)

(Value)
(참 / 거짓)
True / False
문자열
"python'
""
거짓
리스트
[1, 2, 3]
[]
거짓
튜플
()
거짓
딕셔너리
{}
거짓
숫자
0이 아닌 숫자
0
거짓
Null
None
거짓

 

문자, 리스트, 튜플, 딕셔너리는 비어있으면 거짓이 된다는 사실을 기억해 둡니다. 쉽네요!^^

>>> bool(“python”)

True

>>>bool(“”)

False

간단히 bool( ) 연산자로 확인해 보시면 쉽게 이해할 수 있습니다. 파이썬을 띄우시고 직접 실행시켜 보시길 진심으로 권장합니다.

댓글