본문 바로가기
Python/Python_basic

반복문+데이터 구조 예제 2

by Mr.DonyStark 2023. 12. 8.
#예제 : 비어있는 리스트, 튜플, 딕셔너리 생성
gb_data1 = list() #빈리스트
gb_data2 = tuple() #빈튜플
gb_data3 = dict() #빈딕셔너리
print(f'gb_data1 type\t:\t{type(gb_data1)}')
print(f'gb_data2 type\t:\t{type(gb_data2)}')
print(f'gb_data3 type\t:\t{type(gb_data3)}')

#예제 : a, b, c, d, e를 저장하는 튜플을 만들고 첫번째와 마지막 튜플값을 출력
data = 'a','b','c','d','e'
data = tuple(data) #튜플로 형변환
print(data[0]) #첫번째 글자 출력
print(data[-1]) #마지막 글자 출력

#에제 : 스와핑 코드
var1, var2 = 1, 2
print(var1, var2)
var1, var2 = var2, var1
print(var1, var2)

#예제 : 튜플 데이터 중 두번째 데이터부터 마지막 데이터를 튜플 형태로 출력
tuple_data = ('fun-coding1', 'fun-coding2', 'fun-coding3', 'fun-coding4', 'fun-coding5')
new_tuple_data = []
for i in range(1, len(tuple_data)): #range()함수를 활용하여 시작값 ~ 종료값 설정
    new_tuple_data.append(tuple_data[i]) #.append 함수로 추가
new_tuple_data = tuple(new_tuple_data) #튜플로 형변환
print(f'new_tuple_data 데이터\t:\t{new_tuple_data}')
print(f'new_tuple_data 타입\t:\t{type(new_tuple_data)}')

#예제 : 튜플 데이터를 리스트 데이터로 변환 후 fun-coding4 추가 후 다시 튜플로 변환
tuple_data_1=('fun-coding1', 'fun-coding2', 'fun-coding3')
list_tuple_data_1 = list(tuple_data_1)     #튜플 리스트로 형변환
print(type(list_tuple_data_1)) #타입확인
list_tuple_data_1.append('fun-coding4')  #리스트에 값 추가
tuple_data_1 = tuple(list_tuple_data_1)  #리스트 튜플로 형변환
print(f'tuple_data_1 타입\t:\t{type(tuple_data_1)}')
print(f'tuple_data_1 데이터\t:\t{tuple_data_1}')

#예제 : 영어 사전 데이터를 딕셔너리 변수로 만들고 딕셔너리 변수 key와 value 값을 각각 지닌 리스트 변수를 생성 및 출력
new_dict = {'environment' : '환경', 'company' : '회사', 'government' : '정부, 정치', 'face' : '얼굴'}
k_data = list()
v_data = list()
for k, v in new_dict.items(): #.items()를 활용해 키/벨류를 k와 v에 넣음
    k_data.append(k)
    v_data.append(v)
print(f'키 리스트 {type(k_data)}\t{k_data}')
print(f'벨류 리스트 {type(v_data)}\t{v_data}')

#예제 : 영어 사전 데이터를 키:벨류 형태로 출력
new_dict_1 = {'environment' : '환경', 'company' : '회사', 'government' : '정부, 정치', 'face' : '얼굴'}
k_data_1 = list()
v_data_1 = list()
for k, v in new_dict.items(): #.items()를 활용해 키/벨류를 k와 v에 넣음
    print(f'{k}\t:\t{v}')

#예제 : 영어 사전 데이터 중 X가 포함된 값만 출력
#방법1
new_dict_2 = {'environment' : ['환경','X'], 'company' : ['회사','O'], 'government' : ['정부, 정치', 'X'], 'face' : ['얼굴', 'X']}
for kk, vv in new_dict_2.items():
    if 'X' in vv:          
        print(f'X가 포함된 키값\t:\t{kk}')
#방법2
for kk, vv in new_dict_2.items():
    if 'X' == vv[1]: #vv에 담긴 벨류 값은 리스트형태로, 리스트 중 1번 인덱스에 해당하는 값을 의미
        print(f'X가 포함된 키값\t:\t{kk}')

#예제 : dict_all, dict2, dict3 딕셔너리 변수가 있을때 dict2와 dict3 두 데이터를 dict_all 딕셔너리 변수에 추가 후 dict_all 변수 출력
dict_all = {'environment' : '환경', 'government' : '정부, 정치'}
dict2 = {'company' : '회사', 'face' : '얼굴'}
dict3 = {'aplle' : '사과'}
for kk1, vv1 in dict3.items():     #dict3 키 벨류 값 추출
    dict2[kk1] = vv1 #dict2 딕셔너리에 추출한 키와 벨류를 활용해 추가
    for kkk, vvv in dict2.items(): #위 과정과 같이 키 벨류 추출
        dict_all[kkk] = vvv #추출된 키 벨류를 활용해 dict_all에 추가
print(dict_all)

#딕셔너리 변수중 홈페이지, 배우이름, 최근 출연한 영화 개수 출력
actor_info = {'actor_details': {'생년월일': '1971-03-01',
                   '성별': '남',
                   '직업': '배우',
                   '홈페이지': 'https://www.instagram.com/madongseok'},
 'actor_name': '마동석',
 'actor_rate': 59361,
 'date': '2017-10',
 'movie_list': ['범죄도시', '부라더', '부산행']}
for k, v in actor_info.items():
    if str(type(v)) == "<class 'dict'>":    #★★★★벨류 데이터 타입별 특정타입 조건에 따른 출력
        for kk, vv in v.items():
            if kk == '홈페이지':
                print(f'홈페이지\t:\t{vv}')
    elif k == 'actor_name':
        print(f'배우명\t:\t{v}')
    elif str(type(v)) == "<class 'list'>":
        print(f'출연영화 개수\t:\t{len(v)}개')

#예제 : 중복 숫자를 제거한 새로운 집합을 만들고 출력
number_list = [5,1,2,2,3,3,4,5,6,5,7,8,9,10,10,10,12,23,12]
number_list = set(number_list) #중복제거를 위해 set(집합)으로 형변환
print(f'타입\t:\t{type(number_list)}\t데이터\t:\t{number_list}')

#예제 : 집합 추가, 업데이트, 제거
number_list2 = {1,2,3}
number_list2.add(4) #단일추가
print(number_list2)
number_list2.update([5,6]) #복수추가 업데이트
print(number_list2)
number_list2.remove(2) #삭제
print(number_list2)
#예제 : number_1, number_2
number_1 = {1,2,3,4,8,9,10}
number_2 = {1,3,5,7,9}
print(f'합집합\t:\t{number_1|number_2}') #합집합
print(f'교집합\t:\t{number_1&number_2}') #교집합
print(f'차집합\t:\t{number_1-number_2}') #차집합

'Python > Python_basic' 카테고리의 다른 글

클래스/객체지향  (0) 2023.12.11
함수 정의/호출 예제  (1) 2023.12.08
반복문+데이터 구조 예제 1  (1) 2023.12.05
데이터 자료구조  (0) 2023.12.05
함수  (1) 2023.12.05