2장 : 파이썬 프로그래밍의 기초, 자료형(딕셔너리, 집합)

Kiyong Lee·2021년 4월 10일
0

파이썬

목록 보기
4/21
post-custom-banner

2-5 딕셔너리 자료형

딕셔너리란?

  • key-value를 한 쌍으로 갖는 자료형
  • JAVA에서 MAP 생각하면 됨
  • 리스트나 튜플처럼 순차적으로 요소값을 구하는 게 아니라 KEY를 통해 VALUE를 얻는다

딕셔너리는 어떻게 만들까?

{KEY1:VALUE1, KEY2:VALUE2, ...}

딕셔너리 쌍 추가, 삭제

딕셔너리 추가

a={2:'c'} 이고
a[3]='pqr' 이라고 입력한 뒤 a를 실행하면
{2:'c', 3:'pqr'}이 된다

a={'abc':3}
a['x']='y'
a['x']='pq'

라고 하면 key x의 value는 y에서 pq가 되고

{'abc':3, 'x':'pq'}가 된다

딕셔너리 삭제

del a[key]를 하면 된다

만약 없는 key를 삭제하려고 del a[key]를 하면 key-error가 뜬다

딕셔너리 사용하는 방법

딕셔너리에서 key를 이용해 value 얻기

리스트나 튜플에서는 인덱싱과 슬라이싱을 이용했는데, 딕셔너리는 한 가지 방법밖에 없다

a['key']를 써서 value값을 얻어내는 것이다

딕셔너리 만들 때 주의사항

  1. key는 고유한 값이기 때문에 중복되는 key값 설정하면 마지막 하나를 제외한 나머지 것들이 무시된다
    딕셔너리 추가에서 내가 기술한 내용이네 ㅋ;;

  2. key에 리스트를 쓸 수 없다. 다만 튜플은 쓸 수 있다.
    아 여기서 알 수 있는 게 리스트는 유동적이고 튜플은 고정이니 key값으로 쓸 수 있겠구나
    라는 걸 알 수 있다.
    복습도 되고 좋다

딕셔너리 관련 함수들

key 리스트만들기

keys 함수를 사용한다

a라는 딕셔너리의 key리스트를 보려면 a.keys()를 쓰면된다

특정 key를 뽑아내려고 숫자나, key값을 괄호안에 입력하면 takes no arguments 에러가 난다

value 리스트 만들기

values 함수를 사용한다

a라는 딕셔너리의 value리스트를 보려면 a.values()를 쓰면 된다

특정 key를 뽑아내려고 숫자나, key값을 괄호안에 입력하면 takes no arguments 에러가 난다

key-value 쌍으로 얻기

items 함수를 사용한다

a라는 딕셔너리의 key-value를 얻고 싶다면 a.items()를 쓰면 된다

특정 key를 뽑아내려고 숫자나, key값을 괄호안에 입력하면 takes no arguments 에러가 난다

key-value 쌍으로 지우기

clear 함수를 사용한다

a라는 딕셔너리 key-value를 모두 지우며, 출력하면 none이 나온다

key로 value얻기(get)

위에서 a[key]로 value를 얻는다고 기술했는데, get이라는 함수로도 추출할 수 있다

다만 a[key]에서 key가 없는 경우는 오류가 발생하며, get(key)를 하면 none을 반환한다

key가 딕셔너리안에 있는지 조사하기

in 함수를 쓴다
이거 sql에서도 비슷하게 쓰는 거 같은데;;

key in a 했을 때, a안에 key가 있으면 true, 없으면 false

2-6 집합자료형

집합자료형은 어떻게 만들까?

일단, 집합(set)은 집합에 관련된 것을 쉽게 처리하기 위해 만든 자료형이다

집합자료형은 set을 이용해 만든다

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

괄호안의 리스트를 넣어서 만들 수 있고, 문자열로 입력할 수 있다

set 괄호안에는 1개의 arguments만 선언할 수 있으며, int는 할 수 없다

그런데 s2를 출력하면 {'e', 'h', 'l', 'o'} 혹은 순서가 뒤 바뀌어서 나오고 l이 하나밖에 안나온다

왜 그럴까?

집합자료형의 특징

여기서 set의 가장 큰 특징 2가지가 나온다

  1. 중복 허용 ㄴㄴ
  2. 순서 없음

리스트나 튜플은 순서가 정해져 있어서 인덱싱/슬라이싱이 되는데, set은 허용하지 않는다정해져 있어서 인덱싱/슬라이싱이 되는데, set은 허용하지 않는다
subscriptable 에러 발생함

그래서 인덱싱, 슬라이싱을 하려면 리스트 혹은 튜플로 만들어야 한다

교집합, 합집합, 차지합 구하기

교집합

두개의 집합형 a,b가 있을 때

  1. & 기호를 써서 표현하거나 a&b
  2. a.intersection(b)로 표현

intersection 개오랜만 ㅋㅋ;

합집합

  1. \를 써서 표현하거나 a\b
  2. a.union(b)로 표현
  3. 중복은 한 개만 표현함

차집합

  1. -를 써서 표현하거나 a-b
  2. a.difference(b)로 표현

집합형 관련 함수들

add

값 1개 추가할 떄 사용

update

값 여러개 추가할 때 사용

s1=set([1,2,3])
s1.update('사',5,['육','칠','팔'])

를 해서 run하면 int is not iterable 이라는 오류가 난다
반복불가능하다는 뜻인데 무슨 뜻인가 하고찾아보니

단일객체가 아닌 여러개의 요소를 가진 객체(리스트, 튜플 등)가 아니라서 그런 거 라고 한다
출처 : http://codingschool.info/rboard2/index.php?type=view&table=start_python&num=53

remove

특정값 제거하려고 할 때 사용한다

s1.remove()를 하면 되는데, 삭제하려는 값이 문자열인지 숫자인지 잘 생각하자

불/변수는 간단하게 읽고, 포스팅은 안 할 예정

profile
ISTJ인 K-개발자
post-custom-banner

0개의 댓글