Python의 기초 숙지 단계
변수와 다양한 자료형들에 대해서 알아봅니다.
ep2. 변수와 동전
위 이미지는 세계 여러나라의 구리동전 입니다.
동전들은 각 국가의 화폐국에서 정한 문양과 액수를 인쇄하기 전까지는
그저 둥근 구리 원형 이었을 것입니다. 모든 동전들은 공통적으로
구리로 이루어진 무언가라는 점은 똑같습니다.
하지만 누군가 의도를 갖고 정보를 입력함으로써 나라에서 통용되는
화폐(coin)라는 가치를 갖게 됩니다.
변수도 이와 똑같습니다. 아무 의미 없던 텍스트에 데이터를 입력하는 순간부터
그 변수는 의미를 갖게 됩니다.
Variable ; 변하는 값
4장 변수와 자료형
4.1 변수
왜 변수가 필요할까요
먼저, 자릿값이 복잡한 연산을 진행해보았습니다.
12340 * 1/2
12340 * 1/4
12340 * 1/5
해석
6170.0
3085.0
2468.0
(나눗셈이 포함되어 있기 때문에 소숫점도 같이 나옵니다)
앗, 그러고보니 위 계산들은 공통점이 있습니다. 12340이 계속 사용되는 것을 알 수 있습니다.
이를 공통된 값으로 묶어 좀 더 편하게 계산하려 합니다.
이때 사용하는 것이 모든 것의 이름이 되는 변수입니다.
변수는 데이터를 잠시 저장하는 것으로, 언제든지 변할 수 있고 최근에
업데이트한 데이터만이 출력됩니다.
그 때문에, 변수를 업데이트한 순서가 다르면 이미 작성했던 문자가
사라지기도 하고, 기억에 없던 문자가 튀어나오기도 합니다.
다양한 상황에서 변수의 업데이트에 유의해야겠습니다.
abc = 12340
print(abc)
>>>>>>
12340
이렇게 abc를 입력한 후, 쉽게 계산할 수 있습니다.
print(abc * 1/2)
print(abc * 1/4)
print(abc * 1/5)
해석
6170.0
3085.0
2468.0
데이터를 변수에 할당하다.
변수에 자료를 할당하고, 변수를 불러 값을 출력
(변수의 반대개념은 상수로, 변하지 않습니다)
변수에는 몇가지 규칙들이 있습니다.
이는 결코 변하지 않으니 반 드 시 😢 외워 두어야 합니다.
규칙들
1. 변수명은 문자, 숫자, 밑줄 기호를 이용하여 만들 수 있다. ex) a, book, my_student2, MyDog, _my_number
2. 숫자로 시작할 수 없다. 5징어(x)
3. 대소문자를 구별함 Money != money
4. 공백은 불가함 world cup (x)
5. 밑줄 이외의 기호는 불가 (%, & 등)
6. 예약어는 사용 불가 (True, False, and, or 등) (이미 존재하는 함수입니다)
아울러, 띄어쓰기는 불가능하기 때문에 'hello_my_name_is_byun su'
위와 같이 모두 언더바_를 사용해서 값을 저장해야 합니다.
4.2 문자열
문자열 만들기
Python에서는 문자열을 쓰는 상황이 아주 많습니다.
이를 쓰기 위해서는 글자 앞 뒤에 "큰따옴표"나 '작은따옴표'를 붙이면 가능합니다.
붙이지 않아도 출력되는 것은 상수밖에 없습니다.
큰따옴표/ 작은따옴표 둘중의 하나만 선택하시면 좋습니다.
a = "Python"
b = "good"
print(a, b)
해석
Python good
문자열의 규칙은 각 변수에 저장된 문자를 반환하는 것입니다.
즉, a에 저장된 Python을 출력하고, b에 저장된 good을 출력한 것입니다.
print(ab)
그렇다면 이렇게 , 쉼표로 구분하지 않은 변수는 어떻게 될까요?
해석
NameError: name 'ab' is not defined
>>>>>>오류 반환
이번 시간의 첫 오류 반환입니다.
문자열을 이렇게 출력하는 것은 불가능하기 때문에 출력이 안되죠?
문자열을 출력하는 기호는 " " 큰 따옴표와 ' ' 작은 따옴표 모두 허용합니다.
string1 = "String test 1"
string2 = 'String test 2'
print(string1)
print(string2)
해석
String test 1
String test 2
특별한 차이는 없습니다.
그렇다면 " " 큰따옴표와 ' ' 작은 따옴표를 한꺼번에 출력해야 하는 상황에선
어떻게 써야 할까요?
string3 = 'This is a "double" quotation test'
string4 = "This is a 'single' quotation test"
print(string3)
print(string4)
해석
This is a "double" quotation test
This is a 'single' quotation test
이렇게 겉에 " " 큰 따옴표를 썼으면 ' ' 작은 따옴표를 쓰면 됩니다.
type(string1)
문자열의 타입은 string의 줄임말입니다.
해석
str
그런데 단순한 단어나, 문장이 아니라 두 세줄이 넘어가는
문장을 쓰고 싶을때도 있습니다. 이럴 때는 어떻게 할까요?
long_string1 = '''[삼중 작은 따옴표를 사용한 예]
파이썬에는 삼중 따옴표로 여러 행의 문자열을 입력할 수 있습니다.
큰따옴표(")와 작은따옴표(')를 입력할 수 있습니다.
'''
long_string2 = """[삼중 큰따옴표를 사용한 예]
파이썬에는 삼중 따옴표로 여러 행의 문자열을 입력할 수 있습니다.
큰따옴표(")와 작은 따옴표(')도 입력할 수 있습니다.
"""
print(long_string1)
print(long_string2)
바로 세번 연속해서 따옴표를 쓰면 됩니다. 이 경우, 엔터키를 쳐도
문자열은 계속 입력됩니다.
삼중따옴표 활용
[삼중 작은 따옴표를 사용한 예]
파이썬에는 삼중 따옴표로 여러 행의 문자열을 입력할 수 있습니다.
큰따옴표(")와 작은따옴표(')를 입력할 수 있습니다.
[삼중 큰따옴표를 사용한 예]
파이썬에는 삼중 따옴표로 여러 행의 문자열을 입력할 수 있습니다.
큰따옴표(")와 작은 따옴표(')도 입력할 수 있습니다.
상수에서 사용되는 덧셈과 곱셈은 문자열에서도
똑같이 사용할 수 있습니다. 다만, 문자열에는 뺄셈이나
나눗셈은 사용할 수 없겠죠?
문자열 다루기
문자열의 더하기와 곱셈
a = 'Enjoy '
b = "python!"
c = a+b
print(c)
더해봅시다.
Enjoy python!
이번엔 곱해볼까요?
print(a*3)
Enjoy Enjoy Enjoy
이러한 경우, a라는 변수에 "Enjoy "라는 데이터가
저장되어 있기 때문에 세번 반복된 값이 나옵니다.
이제 다음 단계인 리스트, 튜플, 세트, 딕셔너리 입니다.
오늘 교실에서 중간고사를 본 학생이 있다고 가정해 봅니다.
중간고사 과목은 국어, 영어, 수학, 사회, 과학 5가지 과목이 있습니다.
그리고 점수는 각각 국어는 90점, 영어는 95점, 수학은 85점, 사회는 80점, 과학은 75점입니다.
헌데, 어쩐지 서술하는 문장이 상당히 길어집니다.
이를 단순하게 묶어서 쓰는 방법은 없을까요.
4.3 리스트
리스트 만들기로 간단하게 정리해보겠습니다.
데이터를 한꺼번에 처리하기 위해 묶어놓으면 편하다.
기호 = [ ] 대괄호
# a 학생의 국어, 영어, 수학, 사회, 과학 점수가 각각 90, 95, 85, 80, 75이다.
studenta = [90, 95, 85, 80, 75]
studenta
더 간편하게, studenta라는 변수로 훌륭하게 묶었습니다.
이를 리스트라고 합니다!
여기에도 몇 가지 규칙이 있습니다.
# 리스트의 주소는 1이 아니라 0번째부터 시작하는 것입니다.
리스트의 타입과 여러가지 경우들을 출력해볼까요?
type(studenta)
studenta
해석
list
[90, 95, 85, 80, 75]
type은 리스트가 출력됩니다.
여기에 저장된 숫자 리스트들이 출력됬군요.
먼저, 리스트의 타입은 물론 list 입니다.
그리고 studenta 라는 변수의 주소를 입력하면 그에 해당하는
항목이 출력되게 됩니다.
위와 같이, 리스트에는 0번째가 곧 1번째 입니다.
그렇게 0,1,2,3,4,5 번째가 존재하고, 음수로도 주소가 할당되어 있습니다.
studenta[0]
studenta[1]
studenta[2]
studenta[-1]
studenta[-2]
해석
90
95
85
75
80
1번째인 0번부터 1번, 2번까지 출력됬고,
그외로 -1번과 -2번은 순서가 거꾸로 되어
마지막과 마지막에서 두번째 데이터를 반환했습니다.
새로운 데이터를 할당하는 것도 가능
studenta[1] = 100 # 2번째 항목에 새로운 데이터를 할당합니다.
studenta[1]
리스트에는 새로운 데이터를 기존 데이터와 교체할 수 있습니다.
새롭게 데이터가 추가됩니다.
100
이제 다시 한번 리스트를 꺼네봅니다.
studenta
[90, 100, 85, 80, 75]
그럼, 리스트에는 성적점수와 같은 상수 데이터만 넣을 수 있을까요?
물론 그렇지 않습니다!
이는 앞으로의 튜플, 세트, 딕셔너리도 같습니다.
myFriends = ['James', 'Robert', 'Lisa', 'Mary']
myFriends
['James', 'Robert', 'Lisa', 'Mary']
문자열을 정상적으로 넣고, 대괄호를 닫아 리스트를
저장할 수 있습니다.
마찬가지로, 0,1,2,3,...-1,-2...번째 주소도 뽑아낼 수 있습니다.
myFriends[0] # 1번째 문자열을 출력
myFriends[3] # 4번째 문자열을 출력
myFriends[-1] # 마지막 문자열을 출력
myFriends[0:3:2]
'James'
'Mary'
'Mary'
['James','Lisa']
하지만 myFriends[0:3:2]는 무엇일까요?
이는 리스트의 일부항목 가져오기로,
조금 이따가 볼 수 있게 됩니다.
다른 타입끼리도 생성 가능
mixedList = [0,2,3.14,'python','program',True,myFriends]
리스트는 숫자, 문자열, 불 값, 다른 리스트 등을 모두 가져올 수 있습니다.
그렇다면, 문자열처럼 리스트를 더할 수도 있을까요?
리스트 더하기와 곱하기
list_con1 = [1,2,3,4]
list_con2 = [5,6,7,8]
list_con = list_con1 + list_con2 #a리스트와 b리스트를 연결하겠습니다.
list_con
해석
충분히 가능합니다. 리스트와 리스트는 연산자 +를 이용해 쉽게 더하고,
*로 반복시킬 수 있습니다.
[1, 2, 3, 4, 5, 6, 7, 8]
list_con1 = [1,2,3,4]
list_con = list_con1 * 3 #리스트를 n회 반복하겠습니다.
print(list_con)
해석
곱하기 연산자 부분
[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
이제 상단에서 잠깐 언급됬던 [ : : : ] 기호들을 확인해봅니다.
리스트 중 일부 항목 가져오기
리스트 [i_start : i_end]
리스트 [i_start : i_end : i_step]
##각각 인덱스의 시작, 끝, 증가 범위를 지정하면 i_start 부터 i_end "-1 까지" 리스트 반환.
생략하면 0, 끝, 1로 간주한다.
list_data = [0,1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9]
print(list_data)
print(list_data[0:3])
print(list_data[4:8])
print(list_data[:3])
print(list_data[7:])
print(list_data[1:8:2])
해석
리스트를 콜론 : 으로 구분하면 일부 항목만 골라서 가져올 수 있습니다
list_data[1:5:1] 은 list_data를 1번째부터 5번째까지 일정하게 가져오는
것입니다.
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2]
[4, 5, 6, 7]
[0, 1, 2]
[7, 8, 9]
[1, 3, 5, 7]
단 [a:b:c]에서 a나 b, c를 생략할 수도 있고, 모두 생략도 가능합니다.
그러한 경우, 생략한 부분부터 끝까지 진행됩니다.
리스트의 몇몇 항목만 제거하는 것은 어떨까요?
리스트에서 항목 삭제하기
print(list_data)
del list_data[6]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list_data)
[0,1,2,3,4,5,7,8,9]
del 을 이용해서 그 주소에 맞는 항목을 삭제할 수 있습니다.
del list_data[6]
#list_data의 6번째 주소를 삭제합니다.
만약 이를 2번 반복하면, 반복할 때마다 6번째 있는 항목이
계속 사라질 수 있습니다.
리스트에서 항목의 존재 여부 확인하기
항목들이 매우 많을 경우, 어떤 항목이 리스트 안에
있을 지 찾기 어려울 때도 있습니다.
리스트 안에 값이 있는지 없는지도 찾을 수 있을까요?
Bool로 반환함 - 값이 포함되어 있는가
list_data1 = [1,2,3,4,100]
print(5 in list_data1)
print(100 in list_data1)
print(1 in list_data1)
print(0 in list_data1)
해석
False
True
True
False
존재 여부는 in 을 통해 확인할 수 있습니다.
해당 항목이 있다면 True, 없다면 False 값을 반환하게 됩니다.
위에서는 print를 씌웠지만, 굳이 씌우지 않고도 가능합니다.
리스트 메서드 활용하기
자료형.메서드이름() 변수형.메서드이름()
메서드란 일종의 저장되어 있는 함수입니다.
리스트만을 위해 저장된 메서드를 활용하면 추가와 지정한 주소에
추가가 가능합니다.
이제부터는 input값 뒤에 바로 반환값을 붙이겠습니다.
append는 덧붙이다는 의미입니다.
myFriends = ['James', 'Robert', 'Lisa', 'Mary']
print(myFriends)
myFriends.append('Thomas') #리스트에서 항목 하나를 마지막에 추가하겠습니다. append ; <미,영> (글에)덧붙이다, 첨부하다
print(myFriends)
['James', 'Robert', 'Lisa', 'Mary']
['James', 'Robert', 'Lisa', 'Mary', 'Thomas']
insert는 어떤 곳의 사이에 넣다, 끼워넣다의 의미입니다.
myFriends = ['James', 'Robert', 'Lisa', 'Mary']
print(myFriends)
myFriends.insert(1,'Paul') #리스트에서 'n번째' 항목에 삽입합니다. insert ; <미,영> (다른 것 속에, 둘 사이에)끼우다, 넣다
print(myFriends)
['James', 'Robert', 'Lisa', 'Mary']
['James', 'Paul', 'Robert', 'Lisa', 'Mary']
extend는 크게 만든다의 의미로, 마지막에 추가합니다. (2개 이상이 가능합니다)
myFriends = ['James','Robert','Lisa','Mary']
print(myFriends)
myFriends.extend(['Laura','Betty']) # 항목 여러개를 마지막에 추가합니다. extend ; <미,영> 더 길게(크게,넓게) 만든다
print(myFriends)
['James', 'Robert', 'Lisa', 'Mary']
['James', 'Robert', 'Lisa', 'Mary', 'Laura', 'Betty']
remove는 어떤 곳에서 내보낸다는 의미입니다.
myFriends = ['James','Robert','Lisa','Mary']
print(myFriends)
myFriends.remove('James') # 첫 번째로 일치하는 항목을 리스트에서 제외하겠습니다. remove ; <미,영> (어떤 곳에서) 치우다[내보내다]
print(myFriends)
['James', 'Robert', 'Lisa', 'Mary']
['Robert', 'Lisa', 'Mary']
pop은 통통 튄다는 의미인데, 일단 마지막 주소에 있는 것을 제거하는 것이 되었습니다.
myFriends = ['James', 'Robert', 'Lisa', 'Mary']
print(myFriends)
popFriends = myFriends.pop() # 마지막 항목을 제거한 후에 반환하겠습니다.
print(myFriends)
print(popFriends)
['James', 'Robert', 'Lisa', 'Mary']
['James', 'Robert', 'Lisa']
Mary
index는 엑셀에서도 자주 쓰이는 함수죠? 색인을 의미합니다.
myFriends = ['James', 'Robert', 'Lisa', 'Mary']
print(myFriends)
indexfriend = myFriends.index('Lisa') # Lisa가 있는 주소를 반환하겠습니다.
print(indexfriend)
['James', 'Robert', 'Lisa', 'Mary']
2
count는 다른 프로그램에서도 자주 쓰이는 함수입니다. 여기서도 갯수를 세줍니다.
myFriends = ['James', 'Robert', 'Lisa', 'Mary']
print(myFriends)
LisaCount = myFriends.count('Lisa') # Lisa가 몇 번 존재하는지 갯수를 반환하겠습니다.
print(LisaCount)
['James', 'Robert', 'Lisa', 'Mary']
1
sort는 정렬을 의미합니다만 여기서는 랜덤하게 뒤섞어 주는 기능을 합니다.
myFriends = ['James', 'Robert', 'Lisa', 'Mary']
print(myFriends)
myFriends.sort() # 리스트의 항목들을 랜덤으로 정렬하겠습니다. (알파벳 순으로 추측)
print(myFriends)
['James', 'Robert', 'Lisa', 'Mary']
['James', 'Lisa', 'Mary', 'Robert']
reverse는 sort와 유사합니다. 다만 순서를 반대로 바꿔줍니다.
myFriends = ['James', 'Robert', 'Lisa', 'Mary']
print(myFriends)
myFriends.reverse() # 리스트의 항목들의 순서를 정반대로 바꾸겠습니다.
print(myFriends)
['James', 'Robert', 'Lisa', 'Mary']
['Mary', 'Lisa', 'Robert', 'James']
이제 복잡했던 리스트의 메서드가 끝났습니다.
다음은 튜플이라는 새로운 자료형입니다.
방금 제시했던 리스트와 가장 큰 차이점은 변경이 불가능하다는 점입니다.
그 때문에 이러한 성질을 이용해서 추후에 효율적인 코드를 제작할 수 있습니다.
4.4 튜플
튜플 만들기
리스트와 유사하나 튜플은 항목 변경이 불가능합니다.
리스트는 [ ] 대괄호 튜플은 ( ) 소괄호
튜플의 적당한 이미지를 찾다보니, 이러한 시험관 이미지가 나오더군요.
무슨 관계일까요?
튜플은 더 간편합니다. 기호로는 ( ) 소괄호를 사용합니다.
그렇지만, 기호는 없어도 무방합니다.
tuple1 = (1,2,3,4)
tuple1
(1, 2, 3, 4)
튜플의 타입
type(tuple1)
tuple
타입은 물론, tuple이겠죠?
오히려 튜플에서는 꼭 필요한 기호가 있는데요.
바로 쉼표(,) 입니다.
소괄호 없이도 생성 가능
tuple2 = 5,6,7,8
print(tuple2)
tuple2 = 5,6,7,8
print(tuple2)
(5, 6, 7, 8)
type(tuple2)
tuple
a = 1,2,3,4,5
type(a)
tuple
인자가 1개밖에 없는 튜플 생성
입력한 후에 ( , ) 콤마 추가 필요
항목이 하나밖에 없는 튜플도 생성할 수 있습니다.
tuple3 = (9,) # 반드시 쉼표가 (',') 필요합니다
tuple4 = 10, # 반드시 쉼표가 필요합니다
print(tuple3)
print(tuple4)
언급했듯이, 튜플은 항목을 변경하거나 삭제할 수 없습니다.
실제로 삭제하려고 하면 제대로 작동하지 않습니다.
튜플 다루기
튜플은 변경 및 삭제가 불가
tuple5 = (1,2,3,4)
tuple5[1] = 4 #한번 생성된 튜플 요소는 변경되지 않습니다
del 불가
del tuple5[1] #한번 생성된 튜플 요소는 삭제되지 않습니다
다만, 주소의 수정과 상관없는 메서드들 index, count 등은
리스트와 튜플에 모두 사용할 수 있습니다.
tuple6 = ('a', 'b', 'c', 'd', 'e', 'f')
tuple6.index('c') # 튜플에서 항목의 주소값이 몇 인지 찾아줍니다.
2
tuple7 = ('a', 'a', 'a', 'b', 'b' , 'c', 'd')
tuple7.count('a') # 튜플에서 항목이 몇개 존재하는지 찾아줍니다.
3
중학교 때 배웠던 수학의 개념 중 "집합"이라는 분야가 있습니다.
실생활에서는 비슷한 점수를 가진 집단, 집단과 집단과의 비교에
교집합, 합집합은 물론 차집합까지 다양하게 쓰입니다.
이제, 집합과 같이 쓰이는 세트에 대해서 알아봅시다.
세트 만들기
세트는 { } 중괄호로 표기
세트는 집합입니다.
set1 = {1,2,3}
set1a = {1,2,3,3}
print(set1)
print(set1a)
{1, 2, 3}
{1, 2, 3}
먼저, 기호는 {} 중괄호로 표기합니다. 이따가 딕셔너리를 사용할때도
{}를 사용하지만, 안에서 사용하는 방식이 약간 다릅니다.
타입은 set 입니다.
type(set1)
세트에 적용되는 연산은 다음과 같습니다.
세트의 교집합, 합집합, 차집합 구하기
바로 intersection, union, difference 입니다.
A = {1,2,3,4,5} #Set A
B = {4,5,6,7,8,9,10} #Set B
A.intersection(B) # 집합 A에 대한 집합 B의 교집합을 구합니다 (A∩B)
A.union(B) # 집합 A에 대한 집합 B의 합집합을 구합니다 (A∪B)
A.difference(B) # 집합 A에 대한 집합 B의 차집합을 구합니다 (A-B)
intersection은 교집합, union은 합집합, difference는 차집합을 표현합니다.
다만, 이를 그대로 쓰는 대신 기호로 사용하는 것이 훨씬 간편합니다.
교집합 "&"
A&B
집합 A와 B의 교집합은 A&B로, A와 B안에서 중복되는 값을 반환합니다.
합집합 "|"
A|B
집합 A와 B의 합집합은 A|B로, A와 B을 합해서 반환합니다.
차집합 "-"
A-B
집합 A와 B의 차집합은 A-B로, A에는 있으나 B에는 없는 것을 반환합니다.
이제 list부터 tuple, set 까지 배웠습니다.
이 세가지 자료형은 서로 교체할 수 있습니다.
리스트, 튜플, 세트 간 타입 변환
list()), tuple(), set() 은 서로 변환 가능
a = [1,2,3]
먼저 a 라는 변수에 list를 만들고, 이를 b 라는 변수에
tuple(a)로 바꿔보았습니다.
b = tuple(a)
b
type(b)
(1,2,3)
tuple
세트로 변환
c = set(a)
c
type(c)
{1,2,3}
set
리스트로 변환
list(b)
list(c)
[1, 2, 3]
[1, 2, 3]
위와 같이 자유롭게 변환할 수 있습니다.
set를 만들기 위해 c를 변수로 하여 set로 만들었고,
다시 list를 만들기 위해 list(c)로 교체했습니다.
마지막 단계입니다. 이제 우리는 값과 열쇠를 따로 저장할 수 있는
"Dictionary"를 배우게 됩니다.
영어로 사전이라고 하죠.
4.6 딕셔너리
딕셔너리 만들기
딕셔너리의 규칙은?
중괄호로 표현한다.
키(key)와 값(value)으로 나누어져 있다. (왼쪽이 키, 오른쪽이 값)
인덱스 대신 키 값을 사용한다.
딕셔너리는 왼쪽값을 Key, 오른쪽 값을 Value(값)으로 표현합니다.
이번에는 각 나라와 수도들을 딕셔너리에 저장해 보았습니다.
country_capital = {"영국":"런던", "프랑스":"파리", "스위스":"베른","호주":"멜버른", "와칸다":"와칸다시티" }
country_capital
{'영국': '런던', '프랑스': '파리', '스위스': '베른', '호주': '멜버른', '와칸다': '와칸다시티'}
타입은 무엇일까요.
type(country_capital)
dict
줄임말을 써서 dict 가 됩니다.
여러가지 데이터들을 호출해보겠습니다.
값(value) 구하기
country_capital["영국"]
'런던'
오른쪽의 값은 키를 호출해서 불러낼 수 있습니다.
만약 키값으로 숫자를 입력했다면, '' 작은 따옴표없이 그냥
숫자만 입력함으로써 value를 호출할 수 있습니다.
키와 값은 숫자, 문자열 둘중 어떤 것도 가능합니다.
키(key)값으로 호출한다
dict_data1 = {1:"버스", 3:"비행기", 4:"택시", 5:"자전거"}
dict_data1
{1: '버스', 3: '비행기', 4: '택시', 5: '자전거'}
아무거나 한번 호출해 볼까요?
dict_data1[3] # dictionary는 키 값을 검색하기 때문에
# 리스트가 0,1,2,3,4로 시작하는 순서의 주소값을 호출하는 것과 다릅니다.
이럴수가, 정말 다양한 변수들도 가져올 수 있습니다.
다양한 형태를 갖고 있는 딕셔너리
dict_data3 = {"list_data1" : [11,12,13], "list_data2" : [21,22,23]}
print(dict_data3)
print(dict_data3["list_data2"])
{'list_data1': [11, 12, 13], 'list_data2': [21, 22, 23]}
[21, 22, 23]
다음 예시입니다.
mixed_dict = {1:10,'dict_num':{1:10, 2:20}, "dict_list_tuple" : {"A":[11,12,13],"B":(21,22,23)}, "dict_string" : "이것은 책입니다."}
mixed_dict
{1: 10, 'dict_num': {1: 10, 2: 20}, 'dict_list_tuple': {'A': [11, 12, 13], 'B': (21, 22, 23)},
'dict_string': '이것은 책입니다.'}
딕셔너리에는 리스트, 튜플, 세트는 물론 같은 딕셔너리까지 포함할 수 있습니다.
이제 여러가지 수정, 추가 방법에 대해서도 제시해보겠습니다.
딕셔너리 다루기
딕셔너리에 데이터 추가하고 변경합니다.
데이터 추가/변경/삭제
추가
country_capital["독일"]="베를린"
country_capital
{'영국': '런던', '프랑스': '파리', '스위스': '베른', '호주': '멜버른',
'와칸다': '와칸다시티', '독일': '베를린'}
독일과 독일의 수도는 없었죠? 추가해 보았습니다.
수정
country_capital["호주"]="캔버라"
country_capital
데이터의 항목 추가는 [] 대괄호를 써서 가능합니다. (마지막 순서로 생깁니다)
마찬가지로, 키에 대해서 새로운 값을 부여하면 수정이 됩니다.
삭제
다만 삭제는 del이라는 메서드를 사용합니다.
그러고 보니 실제로 존재하지 않는 '와칸다'라는 나라가 있네요.
이를 삭제해봅니다.
del country_capital["와칸다"] # 해당 키를 삭제하겠습니다
country_capital
{'영국': '런던', '프랑스': '파리', '스위스': '베른', '호주': '캔버라', '독일': '베를린'}
정상적으로 삭제되었습니다.
그외에도 딕셔너리에서 키와 값을 다양하게 조작할 수 있는
메서드들이 있습니다.
딕셔너리 메서드 활용하기
fruit_code = {"사과":101, "배" :102, "딸기" : 103, "포도" : 104, "바나나" : 105}
먼저, 메서드 설명에 사용하기 위해, 과일과 101부터 시작하는
일련번호를 붙인 fruit_code 딕셔너리를 저장했습니다.
키 반환
print(fruit_code.keys()) # keys 딕셔너리에서 키 전체를 리스트 형태로 반환합니다.
dict_keys(['사과', '배', '딸기', '포도', '바나나'])
값 반환
print(fruit_code.values()) # values 딕셔너리에서 값 전체를 리스트 형태로 반환합니다.
dict_values([101, 102, 103, 104, 105])
키, 값 반환
print(fruit_code.items()) # items 키와 값을 (키, 값)처럼 튜플 형태로 반환합니다.
dict_items([('사과', 101), ('배', 102), ('딸기', 103), ('포도', 104), ('바나나', 105)])
딕셔너리의 값들도 리스트나 튜플로 변환할 수 있습니다.
아래 3가지 방법들이 있습니다.
1) keys() 를 사용하여 키 전체를 리스트 형태로 반환합니다.
2) values() 를 사용하여 값 전체를 리스트 형태로 반환합니다.
3) items() 를 사용하면 키와 값을 함께 튜플로 반환합니다.
리스트로 변환
list(fruit_code.keys())
list(fruit_code.values())
list(fruit_code.items())
['사과', '배', '딸기', '포도', '바나나']
[101, 102, 103, 104, 105]
[('사과', 101), ('배', 102), ('딸기', 103), ('포도', 104), ('바나나', 105)]
데이터 추가
fruit_code2 = {"오렌지":106, "수박" : 107}
fruit_code.update(fruit_code2)
fruit_code
리스트로 변환하는 것도 가능합니다.
앞에서 진행했던 keys, values, items를 리스트로 출력한 모습입니다.
딕셔너리에는 데이터를 추가하는 것도 가능합니다.
단, 마지막 주소로 들어갑니다.
딕셔너리의 삭제하는 방법은 다른 변수와 다르게
clear 입니다.
clear()를 삽입해봅니다.
fruit_code2.clear()
print(fruit_code2)
type(fruit_code2)
{}
dict
정상적으로 사라졌습니다.
자 , 이렇게 하여 ep2. 변수와 여러가지 형태를 알아보았습니다.
리스트, 튜플, 세트, 딕셔너리와 그 수정에 대해서 보았습니다.
다음 시간에는 조건문과 반복문의 여러 형태에 대해서 알아보겠습니다.
다음단계 배우기 : https://astart.tistory.com/7
'Programming Language > Python' 카테고리의 다른 글
파이썬_기초단계 알아보기_ep.6 점입가경! 갈수록 어려워지는 함수 (0) | 2022.12.03 |
---|---|
파이썬_기초단계 알아보기_ep.5 역시 수학은 어려워 (0) | 2022.12.02 |
파이썬_기초단계 알아보기_ep.4 인풋이 좋아야 아웃풋이 좋죠! (0) | 2022.12.01 |
파이썬_기초단계 알아보기_ep.3 만나려면 조건이 맞아야지 (0) | 2022.11.23 |
파이썬_기초단계 알아보기_ep.1 계산기가 내 컴퓨터에? (0) | 2022.11.22 |