Python 44 - 파이썬 데이터 타입의 종류 - 튜플(Tuple), 딕셔너리(Dictionary), 세트(Set)

2021. 6. 5. 13:03python

반응형

조합 데이터 타입

1) list : [ ]
2) tuple : ( )
3) dictionary : { }
4) set : { }


 

튜플(Tuple)

 

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

 

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

t = 10,20,30
print(t)
print(type(t))

 

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

 

튜플값을 하나만 넣고 싶을땐 뒤에 콤마를 붙인다. :

tuple1 = 1  
tuple2 = (1)
tuple3 = (1,)

print(type(tuple1))
print(type(tuple2))
print(type(tuple3))

 

중첩된 튜플을 인덱싱/슬라이싱 할 땐 리스트처럼 쓴다. :

tuple4 = ('a','b',('ab','ac'))
print(tuple4[0])
print(tuple4[1])
print(tuple4[2][0])
print(tuple4[2][1])

 

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

x.extend(y)     #  오류

 

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

 


 

딕셔너리(Dictionary)

 

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

 

딕셔너리의 데이터 타입 알아보기 :
예 )

국어 = 가나다, 영어 = ABC, 아랍어 = لنم
dic = {'국어' : '가나다', '영어' : 'ABC', '아랍어' : 'لنم'}
print(dic)
print(type(dic))

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

key, value, item 각각 리스트에 추출하는 방법 :

print(dic.keys())
print(dic.values())
print(dic.items())

 

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

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

 

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

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

alc라는 딕셔너리 안에 소주라는 key값에 value값은 위 예시처럼 list로 올 수 있다. 

 

key의 값을 알아보는 방법 두가지 :
print(alc['소맥'])        # 키가 없을 경우 오류
print(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()
print(type(v))
print(v)

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

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

이렇게도 가능하다 :
k = list(alc.keys())
print(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) 

 


 

세트(Set)

 

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

 

세트 생성과 데이터 타입 알아보기 :
s = {1,1,1,2,2,2,3,3,3,3,4}
print(s)
print(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

 

겹치지않는 원소 찾기 :
print(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()

 

 

 

 

 

 

-eomcoding 엄코딩-

반응형