점프투파이썬_04_파이썬 프로그래밍의 기초, 자료형: 딕셔너리, 집합 자료형

yh271·2022년 5월 13일
0

점프투파이썬

목록 보기
4/7
  1. 딕셔너리의 기본 모양
{Key1:Value1, Key2:Value2, Key3:Value3, ...}

1) 딕셔너리 정의하기

>>> a = {1: 'hi'}
# 다음과 같이 value에 리스트를 정의할 수 있다.
>>> a = {'a': [1,2,3]}

딕셔너리의 Key로 쓸 수 있느냐 없느냐는 Key가 변하는 값인지 변하지 않는 값인지에 달려 있다.
key에는 리스트를 정의할 수 없다. 그러나 튜플은 가능하다.

# key에는 리스트를 정의할 수 없다. 그러나 튜플은 가능하다.
>>> a = {[1,2] : 'hi'}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

2) 딕셔너리 쌍 추가, 삭제하기

# 딕셔너리 쌍 추가
>>> a = {1:'a'}
>>> a[2] = 'b'
>>> a
{1: 'a', 2: 'b'}
>>> a['name'] = 'pey'
>>> a
{1: 'a', 2: 'b', 'name': 'pey'}
>>> a[3] = [1,2,3]
>>> a
{1: 'a', 2: 'b', 'name': 'pey', 3: [1, 2, 3]}

# 딕셔너리 쌍 삭제
>>> del a[1]
>>> a
{2: 'b', 'name': 'pey', 3: [1, 2, 3]}

3) 딕셔너리를 사용하는 방법

>>> grade = {'pey': 10, 'julliet': 99}
>>> grade['pey']
10
>>> grade['julliet']
99

다음과 같은 딕셔너리의 a[1]에서, Key 값은 리스트의 인덱스가 아니라, Key에 해당하는 1을 나타낸다.
딕셔너리는 리스트나 튜플에서의 인덱싱 방법을 적용할 수 없다.

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

딕셔너리는 Key를 사용하여 Value를 얻는 것이 핵심이다.

>>> dic = {'name':'pey', 'phone':'01199933323', 'birth':'1118'}
>>> dic['name']
'pey'
>>> dic['phone']
'01199933323'
>>> dic['birth']
'1118'

4) 딕셔너리 만들 때 주의할 사항
딕셔너리에서 Key값은 고유한 값이므로 중복되는 Key값을 설정해 놓으면 하나를 제외한 나머지 것들이 모두 무시된다.

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

딕셔너리의 key 값에 리스트는 쓸 수가 없으며, 튜플은 가능하다. ( 1-1)참고 )

  1. 딕셔너리 관련 함수
    1) Key 리스트 만들기(keys): dict_keys라는 객체를 돌려준다. dict_keys를 리스트로 변환하려면 list(객체)를 사용한다.
    print(k)를 입력할 때 들여쓰기를 하지 않으면 오류가 발생한다.
>>> a = {'name':'pey', 'phone':'01199933323', 'birth': '1118'}
>>> a.keys()
dict_keys(['name', 'phone', 'birth'])
>>> list(a.keys())
['name', 'phone', 'birth']
# 반복문을 이용한 출력
>>> for k in a.keys():
...     print(k)
...
name
phone
birth

2) Value 리스트 만들기(values) : dict_values라는 객체를 돌려준다. dict_values를 리스트로 변환하려면 list(객체)를 사용한다.

>>> a.values()
dict_values(['pey', '01199933323', '1118'])

3) Key, Value 쌍 얻기(items) : Key와 Value의 쌍을 튜플로 묶은 dict_items를 돌려준다. dict_items를 리스트로 변환하려면 list(객체)를 사용한다.

>>> a.items()
dict_items([('name', 'pey'), ('phone', '01199933323'), ('birth', '1118')])

4) Key: Value 쌍 모두 지우기(clear)
비어 있는 딕셔너리는 a = dict()로 생성할 수 있다.

>>> a.clear()
>>> a
{}

5) Key로 Value 얻기(get)
get(x)함수는 x라는 Key에 대응되는 Value를 돌려준다.
a.get('name')과 a['name'] 은 동일한 결괏값을 돌려받는다.
그러나 존재하지 않는 키로 값을 가져오려고 할 경우, get('nokey')는 None을 돌려주고, a['name']은 오류를 발생시킨다는 차이점이 있다.

>>> a = {'name':'pey', 'phone':'01199933323', 'birth': '1118'}
>>> a.get('name')
'pey'
>>> a['name']
'pey'
# 존재하지 않는 키
>>> print(a.get('nokey'))
None
>>> print(a['nokey'])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'nokey'

6) 딕셔너리 안에 찾으려는 Key 값이 없을 경우, 미리 정해 둔 디폴트 값을 대신 가져오게 하려면 get(x, '디폴트 값')을 사용하면 편리하다.

>>> a.get('foo','bar')
'bar'

7) 해당 Key가 딕셔너리 안에 있는지 조사하기(in)
딕셔너리의 키가 존재하면 True, 존재하지 않으면 False를 돌려준다.

>>> a = {'name':'pey', 'phone':'01099933323','birth':'1118'}
>>> 'name' in a
True
>>> 'email' in a
False
  • 나혼자 코딩: 다음 표를 딕셔너리로 만드시오.
>>> a = {'name':'홍길동', 'birth':'1128', 'age': '30'}
>>> a
{'name': '홍길동', 'birth': '1128', 'age': '30'}
>>> a.items()
dict_items([('name', '홍길동'), ('birth', '1128'), ('age', '30')])

# 딕셔너리 한 요소씩 출력
>>> for item in a.items():
...     print(item)
...
('name', '홍길동')
('birth', '1128')
('age', '30')
  1. 집합 자료형
    1) 집합 자료형의 생성 및 속성: 중복을 허용하지 않는다. 순서가 없다(Unordered)
>>> s1 = set([1,2,3])
>>> s1
{1, 2, 3}
>>> s2 = set("Hello")
>>> s2
{'l', 'H', 'e', 'o'}

2) set 자료형의 저장된 값을 인덱싱으로 접근하려면 리스트나 튜플로 변환해주어야 한다.
딕셔너리와 마찬가리로 순서가 없는 자료형이기 때문에 인덱싱을 지원하지 않는다.

# 리스트로 변환
>>> s1 = set([1,2,3,4,5,6])
>>> s2 = set([4,5,6,7,8,9])
>>> s1 = set([1,2,3])
>>> l1 = list(s1)
>>> l1
[1, 2, 3]
>>> l1[0]
1

# 튜플로 변환
>>> t1 = tuple(s1)
>>> t1
(1, 2, 3)
>>> t1[0]
1

3) 교집합, 합집합, 차집합 구하기
(논리연산자나 함수를 사용하면 결과는 순서대로 나타남)

#교집합
>>> s1 & s2
{4, 5, 6}
>>> s1.intersection(s2)
{4, 5, 6}
>>> s2.intersection(s1)
{4, 5, 6}
#합집합
>>> s1 | s2
{1, 2, 3, 4, 5, 6, 7, 8, 9}
>>> s1.union(s2)
{1, 2, 3, 4, 5, 6, 7, 8, 9}
# 차집합
>>> s1 - s2
{1, 2, 3}
>>> s2 - s1
{8, 9, 7}
>>> s1.difference(s2)
{1, 2, 3}
>>> s2.difference(s1)
{8, 9, 7}
  1. 집합 자료형 관련 함수
# 값 1개추가(add)
>>> s1 = set([1,2,3])
>>> s1.add(4)
>>> s1
{1, 2, 3, 4}
# 값 여러개 추가(update)
>>> s1 = set([1,2,3])
>>> s1.update([4,5,6])
>>> s1
{1, 2, 3, 4, 5, 6}
# 특정 값 제거(remove)
>>> s1 = set([1,2,3])
>>> s1.remove(2)
>>> s1
{1, 3}

0개의 댓글