인공지능/파이썬

파이썬(Python) - 조합 데이터 타입② 튜플(Tuple), 딕셔너리(Dictionary), 세트(Set)

해피밀세트 2020. 2. 18. 17:51
반응형

 

조합 데이터 타입
1) list : [ ]
2) tuple : ( )
3) dictionary : { }
4) set : { }


 

2. 튜플(Tuple)

 

  • () 소괄호로 표현
  • 리스트와 유사하지만 수정, 삭제, 추가를 없다.

 

튜플의 데이터 타입 확인하기 :
t = 10,20,30
t
type(t)

 

튜플은 수정, 삭제, 추가를 할 수 없다. :
t.append(40)
t.pop()
t.insert(3,40)

 

튜플값을 하나만 넣고 싶을땐 뒤에 콤마를 붙인다. :
tuple1 = 1  
tuple2 = (1)
tuple3 = (1,)
type(tuple1)    
type(tuple2)
type(tuple3)

 

중첩된 튜플을 인덱싱/슬라이싱 할 땐 리스트처럼 쓴다. :
tuple4 = ('a','b',('ab','ac'))
tuple4[0]
tuple4[1]
tuple4[2][0]
tuple4[2][1]

 

튜플 안의 값은 이어붙일 수 없다.
무조건 새로운 변수를 만드는 방법을 사용해야 한다. :
x = (1, 2, 3)
y = (4, 5, 6)
c = x + y
c

x.extend(y)     #  오류

 

변수안에 값이 있으면 True, 없으면 False :
1 in c
1 not in c

 


 

3. 딕셔너리(Dictionary)

 

  • {} 중괄호로 표현
  • key, value 값을 가지는 자료형이다.

 

딕셔너리의 데이터 타입 알아보기 :
예 ) 국어 = 가나다, 영어 = ABC, 아랍어 = لنم
dic = {'국어' : '가나다', '영어' : 'ABC', '아랍어' : 'لنم'}
dic
type(dic)

딕셔너리는 key와 vlaue로 구성되어있다. (item = key, vlaue )

key, value, item 각각 리스트에 추출하는 방법 :
dic.keys()
dic.values()
dic.items()

 

key값만 써도 value값을 볼 수 있다. :

alc = {'소주':'삼겹살', '맥주':'치킨', '막걸리':'파전'}
alc['소주']
alc['막걸리']

 

딕셔너리에 key와 value를 새롭게 추가 :
alc['와인'] = '치즈'
alc

alc['소주'] = ['삼겹살','닭발','오뎅탕','회','오돌뼈']
alc
alc['소주']

 

key의 값을 알아보는 방법 두가지 :
alc['소맥']         # 키가 없을 경우 오류
alc.get('소맥')    # 키가 없을 경우 NONE으로 리턴된다.

 

key나 value가 있으면 True 없으면 False :
'소맥' in alc.keys()
'오돌뼈' in alc.values()
['삼겹살','닭발','오뎅탕','회','오돌뼈'] in alc.values()

 

key, value 삭제와 수정하는 법 :
del alc['소주']             # 해당 key, value 값 삭제
alc['맥주'] = []            # value값만 삭제
alc['맥주'] = '먹태'       #값을 수정

alc.clear()               # key, value 값 전부 삭제

 

alc = {'소주':'삼겹살','맥주':'치킨'}
v = alc.values()
type(v)
v

일때

딕셔너리에서 value 뽑아서 리스트로 변환 :
snack = list(v)
snack

딕셔너리에서 key 뽑아서 리스트로 변환 :
k = alc.keys()
alc2 = list(k)
k

이렇게도 가능하다 :
k = list(alc.keys())
k

 

 

딕셔너리의 정렬

alc = {'소주':'삼겹살', '맥주':'치킨', '막걸리':'파전', '와인':'치즈'}
sorted(alc)

 

아이템 정렬 :
for key, value in alc.items():
    print(key,value)

key를 기준으로 아이템 오름차순 :
for key, value in sorted(alc.items()):
    print(key,value)   

key를 기준으로 아이템 내림차순 :
for key, value in sorted(alc.items(), reverse = True):
    print(key,value)

sorted는 value를 기준으로 정렬할 수 없다.
value를 기준으로 정렬하려면 operator함수를 사용해야 한다.

      
key를 기준으로 오름차순 :
import operator    # operator를 불러온다.
for key, value in sorted(alc.items(), key=operator.itemgetter(0)):
    print(key,value) 

value를 기준으로 오름차순 :
for key, value in sorted(alc.items(), key=operator.itemgetter(1)):
    print(key,value) 

value를 기준으로 내림차순 :
for key, value in sorted(alc.items(), key=operator.itemgetter(1), reverse = True):
    print(key,value) 

 


 

4. 세트(Set)

 

  • {} 중괄호로 표현 (딕셔너리와 혼동 주의)
  • 집합 자료형
  • 리스트와 비슷하다. 인덱스 순서가 없다.
  • 중복을 허용하지 않는다.

 

세트 생성과 데이터 타입 알아보기 :
s = {1,1,1,2,2,2,3,3,3,3,4}
s
type(s)

 

x = {1,2,3,6}
y = {1,2,3,4,5}
일때

합집합 :
x.union(y)
x|y

 

교집합 :
x.intersection(y)
x&y

 

차집합 :
x.difference(y)
x-y

 

겹치지않는 원소 찾기 :
x.difference(y).union(y.difference(x))
(x|y)-(x&y)
x.symmetric_difference(y)

 

세트 집합 변수 삭제, 수정 :
x.remove(1)       # 집합변수의 값을 삭제
x.add(1)            # 집합변수의 값을 한 개 추가
x.update([8,9])    # 여러개의 값을 추가

 


 

조합 데이터 타입의 공집합 표현 (타입을 지정해 놓고 사용할때)

1) 리스트
    x = []

2) 튜플
    y = ()

3) 딕셔너리
    z = {}

4) 세트
    s = set()

 


 

데이터 타입의 종류와
리스트에 관해 더 알고 싶으신 분은 이곳을 참고해 주시길 바랍니다.

https://truman.tistory.com/65

 

파이썬(Python) - 조합 데이터 타입① 데이터 타입의 종류 / 리스트(List)

데이터 타입의 종류 변수(데이터를 저장하는 공간)의 데이터 타입은 크게 두가지로 나뉜다. 단일 값을 저장하는 타입과 여러개의 값을 저장하는 타입( = 조합 데이터 유형, 조합 데이터 타입) 이다. 단일 값을 저..

truman.tistory.com

 

반응형