무향향수

[Python] list, tuple, dictionary 본문

모각코 (23)

[Python] list, tuple, dictionary

튼튼한장 2023. 8. 3. 16:05

목차🧸

1. list(리스트)

2. tuple(튜플)

3. dictionary(딕셔너리)

 

더보기

학습 이유

 모각코 5주차 세미나를 준비하면서 파이썬 기초 자료구조인 리스트, 튜플, 딕셔너리를 활용한 문제를 풀면 좋을 것 같아서 공부하게 되었다.


🧸 1. list(리스트)

리스트 생성시 [대괄호]로 감싸주고 쉼표로 구분해준다.

a = [1, 2, 3, 4, 5] # 리스트 생성시 [대괄호]로 감싸주고 쉼표로 구분해준다.
a = list() # 비어 있는 리스트 생성

 

 

 

리스트는 비어있는 리스트일 수도 있고, 숫자, 문자열, 숫자와 문자열 모두 그리고 리스트 자체를 요솟값으로 가질 수 있다.

즉 리스트 안에는 어떠한 자료형도 포함할 수 있다.

a = [] # 비어 있음
a = [1, 2, 3] # 숫자
a = ['Life', 'is', 'too', 'short'] # 문자열
a = [1, 2, 'Life', 'is] # 숫자와 문자열
a = [1, 2, ['Life', 'is]] # 리스트

 

 

 

리스트 사용시 주로 쓰이는 함수

len(a) # 리스트 a길이 구하기
a.append(1) # 리스트 a의 마지막에 1 추가하기
a.sort() # 리스트 a 요소 정렬하기
a.reverse() # 리스트 a 요소 뒤집기
# reverse()의 경우 정렬 후 뒤집는 것이 아닌 것에 주의!

 

 

 

리스트를 활용한 백준 문제(8958번)!

import sys

N = int(sys.stdin.readline()) # 테스트 케이스 개수

for i in range(N):
    X = list(sys.stdin.readline().rstrip()) # 퀴즈 결과
    score = sum = 0 # 점수, 총합
    
    for j in range(len(X)): # OX 확인하기
        if X[j] == "O":
            score += 1 # 연속으로 O인 경우 이전 점수에 1 더한 값을 총합에 더하기
            sum += score
        else:
            score = 0

    print(sum)

 

 

 


🧸 2. tuple(튜플)

튜플은 요소가 하나일 때 그 뒤에 쉼표를 반드시 붙여야 한다.

튜플은 소괄호 생략이 가능하다.

a = (1, ) # 요소가 하나일 때 뒤에 쉼표 반드시 붙이기!
a = 1, 2, 3 # 소괄호 생략 가능

 

 

 

튜플은 요솟값을 변경할 수 없다.

그러므로 요솟값을 변경할 일이 없는 경우 튜플을 사용하면 된다.

수시로 값을 변화시켜야 한다면 리스트를 사용해야 한다.

실제 프로그램에서는 값이 변경되는 형태의 변수가 훨씬 많기 때문에 평균적으로 튜플보다 리스트를 더 많이 사용한다.

 

 

 


🧸 3. dictionary(딕셔너리)

딕셔너리는 Key와 Value쌍 여러 개가 {중괄호}로 둘러싸여 있고 쉼표로 구분된다.

딕셔너리의 가장 큰 특징은 리스트나 튜플처럼 순차적으로 해당 요솟값을 구하지 않고 Key를 통해 Value를 얻는다는 것이다.

예를 들어 mandarine이라는 단어의 뜻을 찾기 위해 사전의 내용을 순차적으로 모두 검색하는 것이 아니라 mandarine라는 단어가 있는 곳만 펼쳐보면 된다. 

{Key1: Value1, Key2:Value2, Key3:Value3, ...}
# 딕셔너리는 Key와 Value쌍 여러 개가 {중괄호}로 둘러싸여 있고 쉼표로 구분된다.

 

 

 

Value값에 리스트도 넣을 수 있다.

a = {'a' : [1, 2, 3]}
# Value값에 리스트도 넣을 수 있다.

 

 

 

리스트나 튜플 문자열은 요솟값을 얻고자 할 때, 인덱싱이나 슬라이싱 기법 중 하나를 사용한다.

그러나 딕셔너리는 Key를 사용하여 Value를 구해야한다.

grade = {'MINGU' : 100, 'GUJONG' : 98}

grade['MINGU'] # 100
grade['GUJONG'] # 98

 

 

 

딕셔너리의 Key는 고유한 값이기 때문에 중복되는 Key값을 정해놓으면 하나를 제외한 나머지 것들이 모두 무시된다는 점에 주의해야한다.

딕셔너리는 Key를 통해서 Value를 얻는다는 특징이 존재하기 때문에 동일한 Key가 중복으로 존재할 수 없다.

key와 다르게 Value에는 아무 값이나 넣어도 된다.

a = {1 : 'a', 1 : 'b'}
a # {1 : b}
# Key가 모두 1로 중복되기 때문에 가장 뒤에 있는 'b'가 출력된다.

 

 

 

딕셔너리리 사용시 주로 쓰이는 함수

a.keys() # 딕셔너리 a의 Key들만 리턴한다.
a.values() # 딕셔너리 a의 Value들만 리턴한다.
a.items() # 딕셔너리 a의 Key와 Value쌍을 튜플로 리턴한다.

a.get(Key) # 딕셔너리 a의 Key로 Value를 얻는다.

 

 

 

딕셔너리를 활용한 백준 문제(17219번)!

import sys

N, M = map(int, sys.stdin.readline().split()) # 저장된 사이트, 비번 찾을 사이트 수

d = {} # 딕셔너리 

for i in range(N):
    K, V = sys.stdin.readline().split() # 사이트 주소와 비밀번호
    d[K] = V

for i in range(M):
    K = sys.stdin.readline().rstrip() # 사이트 주소로 비번 찾기
    print(d[K])

 

 

 

⭐정리⭐
list(리스트) : [대괄호], 가장 흔하게 쓰임, 모든 자료형 포함 가능
tuple(튜플) : (소괄호), 수정 불가능
dictionary(딕셔너리) : {중괄호}, Key와 Value쌍, Key는 중복 불가능