본문 바로가기
SK Shieldus Rookies 19th/인프라 활용을 위한 파이썬

[SK shieldus Rookies 19기][Python] - 자료형 3

by En_Geon 2024. 3. 13.

1. 딕셔너리(Dictionary)

단어 그대로 '사전', Key와 Value를 한 쌍으로 가지는 자료형 

 

  • Key = soccer일 때, Value = "축구"

딕셔너리는 리스트나 튜플처럼 순차적으로 해당 요솟값을 구하지 않고 Key를 통해 Value를 얻는다.

딕셔너리 안에 Value는 같은 값이 들어갈 수 있지만 Key는 딕셔너리에서 식별자로 사용되어 유일해야 한다.

soccer의 뜻을 찾을 때 사전의 내용을 순차적으로 모두 검색하는 것이 아니라 soccer 단어가 들어 있는 곳만 보는 것이다.

 

 

1) 생김새

dic = {'name' : 'park', 'phone' : '010-9999-8888', 'birth' : '0101'}

 

  • Key, Value의 쌍 여러 개가 중괄호({})로 묶여 있다.
  • 각각의 요소는 Key : Value 형태
  • 쉼표(,)로 구분
  • Key는 'name', 'phone', 'birth'
  • Value는 'park', '010-9999-8888', '0101'

코드를 도식화해서 본다.

 

key Value
name park
phon 010-9999-8888
birth 0101

 

a = {1: 'hi'}
b = {'a': [1, 2, 3]}

 

위 코드에서 보면 Key로 정숫값, Value에는 모든 자료형을 넣을 수 있다.

 

2) 추가, 삭제

리스트와 똑같이 추가할 수 있지만 Key : Value 쌍으로 추가한다.

 

(1) 추가

a = {1: 'a}
a[2] = 'b'
print(a)

a['name'] = 'park'
print(a)

a[3] = [1, 2, 3]
print(a)

 

  • 출력 : {1: 'a', 2: 'b'}
  • 출력 : {1: 'a', 2: 'b', 'name' : 'park'}
  • 출력 : {1: 'a', 2: 'b', 'name' : 'park', 3: [1, 2, 3]}

키는 유일하기 때문에 순서는 중요하지 않다. a[2] = 'b'는 {2: 'b'}쌍을 추가한 것이다.

 

(2) 삭제

a = {1: 'a', 2: 'b', 'name' : 'park', 3: [1, 2, 3]}
del a [1]

print(a)

 

  • 출력 : {2: 'b', 'name' : 'park', 3: [1, 2, 3]}

del a[key]를 사용하면 지정한 Key에 해당하는 Key, Value 쌍이 삭제된다.

 

3) 활용

(1) Value 얻기

'딕셔너리 _변수_이름[key]'를 사용하면 Value 값을 리턴

 

a = {1: 'a', 2: 'b', 'name' : 'park', 3: [1, 2, 3]}

print(a['name'])

 

  • 출력 : park

 

(2) 주의 사항

a = {1: 'a', 1: 'b'}

print(a)

 

  • 출력 : {1: 'b'}

Key는 고유한 값이므로 중복되면 뒤에 있는 것이 앞에 있는 것을 덮어써 뒤엣것만 남는다.

 

a = {[1, 2] : 'hi}

 

  • 위 코드처럼 쓰게 되면 오류가 발생한다.
  • Key에 리스트는 쓸 수 없다.
  • Key에 튜플은 쓸 수 있다.
  • Key가 변하는 값인지, 변하지 않는 값인지에 달려 있다.
  • Value에는 모든 자료형이 가능하다.

 

4) 관련 함수

(1) keys

딕셔너리의 Key만을 모아 dict_Keys 객체로 리턴하는 함수

 

a = {'name' : 'park', 'phone' : '010-9999-8888', 'birth' : '0101'}

print(a.keys())

 

  • 출력 : dict_keys(['name', 'phone', 'birth'])

 

(2) values

Key를 얻는 것과 마찬가지 방법으로 Value만을 모아 dict_values 객체로 리턴하는 함수

 

a = {'name' : 'park', 'phone' : '010-9999-8888', 'birth' : '0101'}

print(a.values())

 

  • 출력 : dict_values(['park', '010-9999-8888', '0101'])

 

(3) items

Key와 Value의 쌍을 튜플로 묶은 값을 dict_items로 리턴하는 함수

 

a = {'name' : 'park', 'phone' : '010-9999-8888', 'birth' : '0101'}

print(a.items())

 

  • 출력 : dict_items([('name', 'park'), ('phone', '010-9999-8888'), ('birth', '0101')])

 

(4) clear

딕셔너리 안의 모든 요소를 삭제하는 함수

 

a = {'name' : 'park', 'phone' : '010-9999-8888', 'birth' : '0101'}
a.clear()

print(a)

 

  • 출력 : {}

 

(5) get

get(x)는 x라는 Key에 대응되는 Value를 리턴하는 함수

 

a = {'name' : 'park', 'phone' : '010-9999-8888', 'birth' : '0101'}

print(a.get('name'))

 

  • 출력 : park

a.get('name')은 a['name']과 동일한 값을 리턴한다.

딕셔너리에 없는 a.get('major')를 가져올 때는 None을 리턴하고, a['major'] 방식은 오류를 발생한다.

 

Key 값이 없는 경우 get(x, '디폴트 값)을 사용한다.

a. get('major', 'math')이면 딕셔너리 a에는 'major'가 없으므로 디폴트 값인 'math'를 리턴한다.

 

(6) in

해당 Key가 딕셔너리 안에 있는지 조사 후 있으면 True, 없으면 False를 리턴하는 함수

 

a = {'name' : 'park', 'phone' : '010-9999-8888', 'birth' : '0101'}

print('name' in a)
print('major' in a)

 

  • 출력 : True
  • 출력 : False

 

2. 집합

집합(Set)은 집합에 관련된 것을 쉽게 처리하기 위해 만든 자료형

 

1) 생김새

set 키워드 사용

 

s1 = set([1, 2, 3])
s2 = set("Hello")

print(s1)
print(s2)

 

  • 출력 : {1, 2, 3}
  • 출력 : {'H', 'o', 'e', 'l'}

 

2) 특징

  • 중복을 허용하지 않는다.
  • 순서가 없다.

리스트나 튜플은 순서가 있기 때문에 인덱싱을 봉해 요솟값을 얻을 수 있지만, set 자료형은 순서가 없기 때문에 인덱싱을 통해 요솟값을 얻을 수 없다.

set 자료형에 저장된 값을 인덱싱으로 접근하려면 리스트나 튜플로 변환 후 사용해야 한다.

 

3) 교집합, 합집합, 차집합

 

(1) 교집합

& 또는 intersection() 함수를 사용하면 교집합을 구할 수 있다.

 

a = set([1, 2, 3, 4, 5, 6])
b = set([4, 5, 6, 7, 8, 9])

print(a & b)

 

  • 출력 : {4, 5, 6}
a = set([1, 2, 3, 4, 5, 6])
b = set([4, 5, 6, 7, 8, 9])

print(a.intersection(b))

 

(2) 합집합

| 또는 union() 함수를 사용하면 합집합을 구할 수 있다.

 

a = set([1, 2, 3, 4, 5, 6])
b = set([4, 5, 6, 7, 8, 9])

print(a | b)

 

  • 출력 : {1, 2, 3, 4, 5, 6, 7, 8, 9}
a = set([1, 2, 3, 4, 5, 6])
b = set([4, 5, 6, 7, 8, 9])

print(a.union(b))

 

  • 출력 : {1, 2, 3, 4, 5, 6, 7, 8, 9}

 

(3) 차집합

-(빼기) 또는 difference() 함수를 사용하면 차집합을 구할 수 있다. 

 

a = set([1, 2, 3, 4, 5, 6])
b = set([4, 5, 6, 7, 8, 9])

print(a - b)

 

  • 출력 : {1, 2, 3}
a = set([1, 2, 3, 4, 5, 6])
b = set([4, 5, 6, 7, 8, 9])

print(a.difference(b))

 

  • 출력 : {1, 2, 3}

 

4) 관련 함수

 

(1) add

1개의 값만 추가하는 함수

 

a = set([1, 2, 3])
a.add(4)

print(a)

 

  • 출력 : {1, 2, 3, 4}

 

(2) update

여러 개의 값을 한꺼번에 추가하는 함수

 

a = set([1, 2, 3])
a.update([4, 5, 6])

print(a)

 

  • 출력 : {1, 2, 3, 4, 5, 6}

 

(3) remove

특정 값을 제거하는 함수

 

a = set([1, 2, 3])
a.remove(2)

print(a)

 

  • 출력 : {1, 3}

a.remove(x)에서 x는 삭제하는 값을 넣어준다.

 

 

댓글