«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Recent Posts
Today
Total
관리 메뉴

짜리몽땅 매거진

[Python] 인덱스, 딕셔너리 본문

Data/Python

[Python] 인덱스, 딕셔너리

쿡국 2023. 7. 19. 16:36

인덱스, 딕셔너리

인덱스
b=[1,2,3,4,5]
b[0]
1
b[-2] #뒤에서부터 인덱스 설정은 -1,-2 등으로 표현
4
b
(1, 2, 3, 4, 5)
len(b)
5
b[4]
5
b[len(b)-1] #len을 이용해 마지막 인덱스를 출력할 수 있다
5
인덱스를 이용해 값을 할당할 수 있다
b[0]=100
b
[100, 2, 3, 4, 5]
b[2]=300
b
[100, 2, 300, 4, 5]
인덱스를 삭제할 수 있다
del b[0]
b
[2, 300, 4, 5]
b[0]
2
슬라이스 사용하기
b[0,1] #한번에 두개이상 인덱스 출력은 안된다
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_13256\4293816436.py in <module>
----> 1 b[0,1]

TypeError: list indices must be integers or slices, not tuple

b[0:3] # :을 이용해 출력하는데 이때 끝값은 -1을 해서 0,1,2 인덱스 값을 출력한다
[2, 300, 4]
a=['안녕하', 3, '나는', '국준호다','만나서', '반갑다', '어색어색']
a
['안녕하', 3, '나는', '국준호다', '만나서', '반갑다', '어색어색']
a[1:5]
[3, '나는', '국준호다', '만나서']
a[2:-1]
['나는', '국준호다', '만나서', '반갑다']
a[1:-1:2] # 마지막에 증가폭을 추가해서 출력 가능
[3, '국준호다', '반갑다']
a[:] #아무것도 넣지 않으면 전체 값 출력
['안녕하', 3, '나는', '국준호다', '만나서', '반갑다', '어색어색']
a[:-1] #앞의 값에 아무것도 넣지 않으면 0번째 인덱스부터 시작
['안녕하', 3, '나는', '국준호다', '만나서', '반갑다']
a[1:] #마지막에 아무것도 넣지 않으면 마지막값까지 출력
[3, '나는', '국준호다', '만나서', '반갑다', '어색어색']
a[::] #이런 경우도 전체 값 출력
['안녕하', 3, '나는', '국준호다', '만나서', '반갑다', '어색어색']
슬라이스로 값을 할당하기
a=[1,2,3,4,5]
a
[1, 2, 3, 4, 5]
a[0:2]=[100,200]
​
​
​
a
[100, 200, 3, 4, 5]
a[3:7]=100,200,300,400  #슬라이스값으로 할당할때는 원하는 범위만큼 할당 가능하다. 변수 값도 늘어남!
a
[100, 200, 3, 100, 200, 300, 400]
a[0:3]=100,200 #인덱스 슬라이스에서 일대일 대응되지 않는 값을 할당했을때 적히지 않은 값은 출력할때 사라짐
a
[100, 200, 100, 200, 300, 400]
a[1:4]=100,200,300,400,500
a
[100, 100, 200, 300, 400, 500, 300, 400]
del a[1:4] #del을 이용해 범위 삭제 가능
a
[100, 400, 500, 300, 400]
딕셔너리
리스트, 튜플과 같이 주머니 개념인데, {}중괄호를 활용하고 형태가 다름
a={'이름':'국준호', '소속':'중앙대학교', '학년':'3학년'} #숫자, 문자 상관없이 ''를 달아줘야 함
a
{'이름': '국준호', '소속': '중앙대학교', '학년': '3학년'}
a={'이름':'국준호', '이름':'제리쿡', '소속':'중앙대학교', '학년':'3학년'}
a #중복된 키값을 입력하면, 마지막 입력한 것으로 출력
{'이름': '제리쿡', '소속': '중앙대학교', '학년': '3학년'}
c={True:100, False:50, 100:'a'} #음 이건 ''안달아도 되네...?
c
{True: 100, False: 50, 100: 'a'}
# 딕셔너리는 키와 값으로 이루어져있다
a = dict(이름='국준호', 상태='국준호', 키='크고싶다')
#이런 방식으로 접근할때는 :이 아니라 =을 사용해야함
a
{'이름': '국준호', '상태': '국준호', '키': '크고싶다'}
a[이름] #대괄호를 이용해 키에 해당하는 값을 찾아야하는데...
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_13256\4751423.py in <module>
----> 1 a[이름]

NameError: name '이름' is not defined

a['이름'] #키에 해당하는 값을 찾고싶을땐 ''을 넣어한다....
'국준호'
a['이름']='제리쿡' #키에 해당하는 값을 바꿔서 할당할 수도 있음.
a
{'이름': '제리쿡', '상태': '국준호', '키': '크고싶다'}

* 추가 과제1

인덱스 응용을 리스트가 아닌 튜플에도 동일하게 적용하기
분명 에러가 나는 것이 있다면 왜 에러나 나는지 확인해 보기!
리스트와 튜플은 두 개가 다른 성질의 주머니라서 문제가 될 수 있으니 확인해 주세요!
a=(1,2,3,4,5,6,7,8,9)
a=(1,2,3,4,5,6,7,8,9)
a
(1, 2, 3, 4, 5, 6, 7, 8, 9)
c=tuple(a)
c
(1, 2, 3, 4, 5, 6, 7, 8, 9)
c[3]
4
c[1:3]
(2, 3)
​
​
c[2:7:2]
(3, 5, 7)
c[len(a)-1]
9
a[1]
2
a[1:4]
(2, 3, 4)

* 추가 과제 2

<딕셔너리 만드는 방법>
4가지 이상 방법이 있다.
1개만 알려드릴테니 구글링해서 다양한 방법을 정리해 주세요!
딕셔너리 = dict(키1= 값1, 키2= 값2, 키3= 값3..)
리서치해보면 어떤 건 문자열 그대로 넣어도 되고 어떤 문자열 제외하고 넣을 수 있다.
구글링을 하는 이유는 구글링 결국 실력향상이 된다.
방법1. 딕셔너리 = dict(키1=값1, 키2=값2)
a=dict(이름='국준호',나이=23,소속='브다')
a['이름']
'국준호'
방법2. 딕셔너리 = dict(zip([키1, 키2], [값1, 값2]))
b=dict(zip(['이름', '나이', '소속'],['국준호',23,'브다']))
# dict와 zip 함수를 이용할때는 키와 값 모두 ''를 넣어줘야 함.
b
{'이름': '국준호', '나이': 23, '소속': '브다'}
방법3. 딕셔너리 = dict([(키1, 값1), (키2, 값2)])
c=dict([('이름', '국준호'),('나이',23),('소속','브다')])
# 튜플형식인데, 반드시 중간에 대괄호를 넣어줘야함.
c
{'이름': '국준호', '나이': 23, '소속': '브다'}
방법4. 딕셔너리 = dict({키1: 값1, 키2: 값2})
d=dict({'이름':'국준호', '나이':23, '소속':'브다'})
#dict안에 중괄호를 넣는 방법인데, 중괄호를 넣었으므로 이때는 =이 아니라 :로 표현
d
{'이름': '국준호', '나이': 23, '소속': '브다'}