59doit

[Python] tuple, set, dic 본문

Programming/Python(파이썬)

[Python] tuple, set, dic

yul_S2 2022. 10. 27. 21:48
반응형

tuple :

튜플 괄호 사용, 만들면 수정불가 (튜플 요솟값 삭제, 변경 불가)

수정시 튜플 → 리스트 → 수정 → 튜플

슬라이싱 / 리스트는 대괄호

원소가 하나일때 콤마 꼭 사용 > t2 = (1, )

 

튜플확인

a= (3, )
print(type(a))
## <출력> <class 'tuple'>

 

튜플인덱싱

t1 = (1,2,'가','나')
t1[3]  #<출력> '나'
t1[0]  #<출력> 1

문자열은 따옴표로 출력된다

 

 

튜플슬라이싱

t1=(1,2,'가','나')
t1[0:]   # <출력> (1, 2, '가', '나')
t1[2:]   # <출력> ('가', '나')

 

튜플더하기

t1=(1,2,3)
t2=('가','나')
t1+t2    
# <출력> (1, 2, 3, '가', '나')

 

튜플곱하기

t1=(8,2)
t1*2
# <출력> (8, 2, 8, 2)

 

 

튜플길이

t1=(1,2,3,4,5,6)
len(t1)
# <출력> 6

 

 

 

tuple ; 콤마 이용하여 값 생성

1) 원소 한개

t1=(1,0)
print(t1)    
# <출력> {tuple:2} (1, 0)


# 2) 원소 여러개

t2 = (1,2,3,4)
print(t2)
# <출력> {tuple:4} (1, 2, 3, 4)


# 3) 튜플 색인

t3 =(t2[0],t2[1:3],t2[-1])
print(t3)
# <출력> {tuple:3} (1, (2, 3), 4)


# 4) 요소반복

for a in t2 :
    print(a,end='')     # 행으로 나열
# <출력> 1234   
    
for a in t2:
    print(a)            # 열로 나열
# <출력>
# 1
# 2
# 3
# 4

end = ' ' : x에 대한 값을 행으로 나열

 


# 5) 요소검사

if 5 in t2 :
    print ("5 있음")
else :
    print("5 없음")
# <출력> 5 없음

 

6)관련함수

6-1) 자료형 변환

lst = list(range(1,6))
t4 = tuple(lst)
print(t4)  
# <출력> (1, 2, 3, 4, 5)

 

6-2) count, index

.count ; 원소 숫자 x의 갯수 값

t4=(1, 2, 3, 4, 5)
print(len(t4),type(t4))     # <출력> 5 class 'tuple'
print(t4.count(2))          # <출력> 1
print(t4.count(3))          # <출력> 1

t5 = (1,2,3,3,5,6)
print(t5.count(3))          # <출력> 2

.index; 색인 x의 위치 값

t4=(1, 2, 3, 4, 5)
print(t4.index(3))     #<출력> 2

t6 = (1,2,(3,4),5,6)
print(t6.index(5))     # <출력> 3
print(t6.index(3))     # <출력> ValueError: tuple.index(x): x not in tuple
print(t6.index(3,4))   # <출력> ValueError: tuple.index(x): x not in tuple

 

set :

중복값 x, 중괄호 {}, 비순서형
1) 요소 중복 -> 중복제거

s = {1,2,3,2,3,5,6} 

for a in s :
    print (a, end='')  
    # <출력> 12356

 

 

2) 집합관련

s1 = {0,1,3,5,7,9}
s2 = {0,2,4,6,8}

2-1) 합 .union

print(s1.union(s2))
# <출력> {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

 

# 2-2) 차 .difference

print(s1.difference(s2))
# <출력> {1, 3, 5, 7, 9}
print(s2.difference(s1))
# <출력> {8, 2, 4, 6}

 

# 2-3) 교 .intersection

print(s1.intersection(s2))
# <출력> {0}

 

# 3) 추가 .add

올바른 원소 추가법

s3.add(13)  
print(s3)
# <출력> {11, 12, 13}

 

  Error  

s3={11,12}
print(s3.add(s2))
# <출력> TypeError: unhashable type: 'set'

.add 값 뒤에는 원소값이 들어가야한다

print(s3.add(13))
# <출력> None

형식 잘못되어 none 값 나온다

 

 

 

 

# 4) 삭제 .discard   >>> add 와 같은 원리로

s4 = {14,15}
s4.discard(15)
print(s4)  
# <출력> {14}

 

 

딕셔너리 :

대응관계 , 중괄호, 인덱스x {}
★key값에는 리스트, 딕셔너리 x / 튜플 o

 

딕셔너리 쌍 추가

ex1)

a={1:'a'}
a[2] = 'b'
print(a)
# <출력> {1: 'a', 2: 'b'}

※ 여기서 a[2] 는 인덱싱이 아니다

 

ex2)

a['name'] ='pay'
a[3] = ['나','는']
print(a)
# <출력> {1: 'a', 2: 'b', 'name': 'pay', 3: ['나', '는']}

 

 

딕셔너리 요소 삭제 ; 'del' 을 사용

del a[1]   
print(a)
# <출력> {2: 'b', 'name': 'pay', 3: ['나', '는']}

del a[3]
print(a)
# <출력> {2: 'b', 'name': 'pay'}

ex2)의 결과값에서 'del' 을 사용하여 딕셔너리 요소를 삭제하였다.

 

 

key 사용해서 value값 찾기

a={'병아리':'삐약삐약','돼지':'꿀꿀'}
a['병아리']   # <출력> '삐약삐약'
a['돼지']    # <출력> '꿀꿀'

 

 

딕셔너리 함수 :리스트만들기

1. key 값만 가져오기

a={'봄':'벚꽃','여름':'수박','가을':'단풍','겨울':'눈'}
a.keys()
#<출력> dict_keys(['봄', '여름', '가을', '겨울'])

2. value 값만 가져오기

a={'봄':'벚꽃','여름':'수박','가을':'단풍','겨울':'눈'}
a.values()
#<출력> dict_values(['벚꽃', '수박', '단풍', '눈'])

 

3. 딕셔너리 내용 지우기 ; clear 사용

a={'봄':'벚꽃','여름':'수박','가을':'단풍','겨울':'눈'}
a.clear()
#<출력> {}

 

4. key값으로 value얻기

a={'봄':'벚꽃','여름':'수박','가을':'단풍','겨울':'눈'}
a.get('가을') # <출력> '단풍'
a['가을']     # <출력> '단풍'

a.get('가을') 와 a['가을'] 의 결과 값은 같다.

 

 

5. 존재하지 않는 값 = none

a={'봄':'벚꽃','여름':'수박','가을':'단풍','겨울':'눈'}
print(a.get('사계절'))  #<출력> None

 

6. 존재하지 않는 값 = 오류

a={'봄':'벚꽃','여름':'수박','가을':'단풍','겨울':'눈'}
a.get['사계절']  #<출력> TypeError: 'builtin_function_or_method' object is not subscriptable
a['사계절']      #<출력> KeyError: '사계절'

 

7. 존재하지 않는 key 값일때 디폴드정해 놓은 값이 나오기 =>get(x,디폴트값)

a={'봄':'벚꽃','여름':'수박','가을':'단풍','겨울':'눈'}
a.get('사계절','없음')
# <출력> '없음'

cabinet={3:"a",10:"b"}
print((cabinet.get(5,"사용가능")))
# <출력> 사용가능

 

8. key값이 있는지 확인 : in

a={'봄':'벚꽃','여름':'수박','가을':'단풍','겨울':'눈'}
'봄'in a      #<출력>True
'사계절' in a  #<출력>False

결과값은 True & False 로 나온다

 

 

9. 추가 없데이트

cabinet={3:"a",10:"b"}

cabinet[3]="c"
print(cabinet)  
#<출력>{3: 'c', 10: 'b'}

cabinet[5]="d"
print(cabinet)   
#<출력>{3: 'c', 10: 'b', 5: 'd'}

 

 

단어 빈도수(word count=wc) 구하기

data = ['1','2',',3','4'',2','2','3']
wc={} #빈셋

for key in data :             # for 요소반복 문으로 data 값을 순차적으로 key라는 변수로 넘겨 받음
    wc[key] = wc.get(key,0)+1
print(wc)
# <출력> {'1': 1, '2': 2, ',3': 1, '4,2': 1, '3': 1}
  • 단계1) 받은 key 값을 wc로 지정 / get()함수로 키 값을 하나씩 빼온다.
  • 단계2) get(x, '디폴트 값') Key 값이 없을 경우 미리 정해 둔 디폴트 값(=0)을 가져온다
  • 단계3) data 1 값을 가져왔을때 key 값인 wc는 빈셋으로 값이 없으므로 디폴드값(=0) 을 가져와 we[key]=0+1=>>1 이되고 wc={1}
  • 단계4) data 2 값을 가져왔을때 key 값인 wc는 wc={1} 으로 2가 없어 디폴드값(=0) 을 가져와 we[key]=0+1=>>1 이되고 wc={1,2}
  • 단계5) data 3 값을 가져왔을때 key 값인 wc는 wc={1,2}이므로 3이 없어 디폴드값(=0) 을 가져와 we[key]=0+1=>>1 이되고 wc={1,2,3}
  • 단계6) data 4 값을 가져왔을때 key 값인 wc는 wc={1,2,3} 이므로 4가 없어 디폴드값(=0) 을 가져와 we[key]=0+1=>>1 이되고 wc={1,2,3,4}
  • 단계7) data 2 값을 가져왔을때 key 값인 wc는 wc={1,2,3,4} 이므로 2가 있어 디폴드값(=0)이 아닌 we[key]=1+1 >>  이되고
반응형

'Programming > Python(파이썬)' 카테고리의 다른 글

[Python] 리스트내포  (0) 2022.10.31
[Python] 반복문 loop, random, for, range  (0) 2022.10.31
[Python] 리스트  (0) 2022.10.27
[Python] 문자열 관련함수  (0) 2022.10.26
[Python] 포맷팅 format  (0) 2022.10.25
Comments