[Python] 리스트와 딕셔너리

수빈·2024년 5월 22일

Python

목록 보기
3/6
post-thumbnail

파이썬에서는 여러개의 데이터를 담을 수 있는 자료형이 있다. 그 종류에는 리스트(list), 튜플(tuple), 집합(set), 딕셔너리(dictionary)가 있는데 오늘은 리스트와 딕셔너리를 알아보겠다. ⭐️

리스트와 딕셔너리, 튜플, 집합은 여러개의 데이터를 담을 수 있는 자료형이라고 했는데, 이들의 차이점이라면 여러개의 값을 담는 방법이 다 다르다는 것이다.

리스트와 딕셔너리의 차이점을 간략히 설명해본다면 리스트는 값들이 순서를 가지고 있어서 각 값 마다 값이 저장되는 위치가 정해져있고, 딕셔너리는 키와 벨류라는 값으로 쌍을 지어서 있다.

먼저 리스트부터 살펴보겠다.

1. 리스트(List)

리스트는 값이 순서대로 담겨있는 기차.. 같은 개념이라고 할 수 있다. 기차도 1호차부터 차례로 n호차까지 길게 이어져있는 구조에 각 호차별 자리가 지정석으로 이뤄져있는 점이 리스트랑 닮았달까 ,,, 비유가 이상해도 그냥 넘어가주세여 ㅎㅎ

먼저 리스트 변수를 생성하는 코드를 살펴보겠다.

fruit_list = ['사과', ' 배', '감']

fruit_list 라는 변수값에 리스트를 생성했다. 리스트에는 차례대로 사과, 배, 감 이라는 값이 담겨있는데, 여기서 사과는 0번 인덱스, 배는 1번 인덱스, 감은 2번 인덱스에 담겨 있는 것을 볼 수 있다.

리스트의 또 다른 특징은 리스트를 생성할 때 여러가지 자료형으로 리스트를 생성할 수 있다는 것이다.

mix_list = [2, '문자', True, ['사과', ' 배', '감']]

위와 같이 한 리스트안에 정수형, 문자형, bool형, 리스트형 값을 넣어 리스트를 구성할 수도 있다. 여기서 3번 인덱스에 있는 리스트의 값의 1번 인덱스에 위치해 있는 '배' 라는 값을 꺼내고 싶으면 아래와 같이 값을 가져올 수 있다.

mix_list[3][1]

위의 값을 출력해보면 '배'라는 값이 출력되는 것을 볼 수 있을 것이다. 이것을 인덱싱이라고 한다. 리스트도 앞서 포스팅한 문자열에서 지원하던 인덱싱과 슬라이싱이 가능하다. 리스트에서의 인덱싱과 슬라이싱에 대해서 알아보자 !

리스트에서의 인덱싱, 슬라이싱

리스트에서의 인덱싱은 문자열의 인덱싱 방법과 동일하다. 꺼내려는 값의 인덱스 값을 통해 꺼내면 된다. (위에 mix_list의 '배'라는 값을 출력하는 방법 참조하시오.)

슬라이싱도 문자열에서 했던 것과 동일하게 사용하면 된다.

test_list = [1,2,3,4,5] 
result = test_list[:3] // 리스트의 앞에서 부터 3개의 값을 출력 => [1,2,3]
result = test_list[-1] // 리스트의 제일 마지막 값이 출력 => 5

이렇게 동일하게 사용하면 된다.

리스트의 더 많은 기능들

리스트에서는 많은 기능들을 지원한다. 종류가 여러가지라서 몇가지만 작성을 해보자면,

1. 리스트에 값 추가하기 (append)

a = [1, 2, 3]
a.append(5)
print(a)     # [1, 2, 3, 5]

a.append([1, 2])
print(a)     # [1, 2, 3, 5, [1, 2]]

a라는 리스트를 생성하고 나중에 리스트에 값을 더 추가해야 할 때, append()를 이용하여 리스트의 마지막에 값을 추가할 수 있다. 리스트에 값을 추가할 때도 여러가지 자료형을 지원한다는 점도 참고하자!

추가로, 리스트 변수에 더하기 연산을 통해 리스트를 추가하는 경우를 살펴보자

a += [2, 7]
print(a)     # [1, 2, 3, 5, [1, 2], 2, 7]

a 리스트 변수에 더하기 연산을 통해 값을 추가한다면 리스트 형태가 아닌 위와같은 형태로 값이 추가된다는 점도 추가로 알아두면 좋겠다.

2. 정렬하기 (sort)

리스트에는 정렬을 해주는 함수를 따로 지원해준다. 보러가보자

a = [2, 5, 3]
a.sort()
print(a)   # [2, 3, 5]

a.sort(reverse=True)
print(a)   # [5, 3, 2]

a라는 리스트 변수를 생성하고 sort()함수를 사용하면 리스트는 자동으로 오름차순으로 정렬된다. 만약 내람차순으로 정렬하고 싶다면 reverse 설정을 통해 내림차순 정렬을 할 수 있다.

3. 리스트 값 중 특정 값 찾기

리스트안에 특정 값이 존재하는 지, 존재하지 않는 지를 알아내는 기능도 있다.

a = [2, 1, 4, "2", 6]
print(1 in a)      # True
print("1" in a)    # False
print(0 not in a)  # True

a라는 리스트안에 1이라는 값이 존재하는 지 알아보고 싶으면 위처럼 (1 in a) 라는 코드를 통해 값 존재 유무를 알아낼 수 있다. a 리스트에는 현재 1이라는 값이 존재하기 때문에 True라는 값이 출력될 것이다.

4. 리스트 길이출력 (len)

문자열과 동일하게 len()함수를 통하여 리스트의 길이를 출력할 수 있다. 앞서 문자열부분에서 배웠기 때문에 자세한 내용은 스킵 ~

a = [1, 5, 2]
print(len(a))   # 3

이외에도 리스트에서는 다양한 함수를 제공하고 있는데, 종류가 너무 많으니 이것도 다음에 기회가 된다면 자주 사용되는 함수들 위주로 정리하는 시간을 가져보도록 하겠다.

리스트를 살펴봤으니 다음으로는 딕셔너리를 살펴보겠다. 📚

2. 딕셔너리(Dictionary)

앞서 말한것 처럼 딕셔너리도 값을 저장하는 것인데 값을 저장하는 방식이 리스트랑 다르다.
딕셔너리는 중괄호로 묶여져 있으며 키(key)-값(value)이 짝을 지어 있는 형태이다. 딕셔너리. 말그대로 사전에 단어를 검색하면 뜻이 나오듯이 딕셔너리의 키를 검색하면 값이 나오는 형태로 보면 될 것 같다.

제일 먼저 딕셔너리를 생성하는 형태를 알아보자

a_dict = {'name': 'happy', 'age': 20}

# 빈 딕셔너리 만드는 방법
empty_dict = {}
empty_dict = dict()

위의 a_dict 딕셔너리 형태를 살펴보면, 여기서 키값은 'name', 'age'가 되고 'happy', 20은 값이 된다. 키와 벨류가 같이 짝을 이뤄져 있는 형태이며 리스트와는 달리 딕셔너리에는 순서가 없다.
그렇기 때문에 딕셔너리에서 값을 검색하려면 인덱싱 방식이 아닌 키 값을 통해 조회하는 방식을 사용해야한다. (인덱싱을 사용하면 에러 발생..!)

a_dict 에서 'name'이라는 키 값에 해당하는 값을 검색하려면 아래와 같이 작성하면 된다.

print(a_dict['name'])

위 코드를 실행시키면 'happy'라는 값이 출력되는 것을 확인할 수 있을 것이다.

딕셔너리의 벨류에도 리스트와 마찬가지로 아무 자료형을 사용할 수 있다. (키부분 말고 벨류부분!)
리스트를 사용하여 a_dict 부분에 'friend'라는 키 값을 추가해보겠다.

a_dict = {'name': 'happy', 'age': 20, 'friend' ; ['IU','ZICO','NewJeans']}

새로 추가된 friend 키의 값을 조회하는 방법은 먼저 friend 키를 조회하여 리스트를 가지고 와서 인덱스로 검색하면 된다.

print(a_dict['friend'][0])  # 출력값 : IU
print(a_dict['friend'][2])  # 출력값 : NewJeans

방금의 상황처럼 딕셔너리에 새로운 키-벨류 값을 추가하거나 삭제, 수정하려면 어떻게 해야하는지 한번 알아보자.

딕셔너리 쌍 추가, 삭제, 수정

먼저 추가하는 것 부터 살펴보자 ~

딕셔너리 쌍 추가

위에서 만든 a_dict를 그대로 가지고와서 사용해보도록 하겠다. a_dict에 'height'라는 키를 추가하려면 아래와 같이 추가하면 된다.

a_dict = {'name': 'happy', 'age': 20}
a_dict['height'] = 165
print(a_dict)  # 출력값 : {'name': 'happy', 'age': 20, 'height': 165}

딕셔너리 요소 삭제하기

삭제할려면 아래와 같이 삭제하면 된다 !

a_dict = {'name': 'happy', 'age': 20, 'height': 165}
del a_dict['name']
print(a_dict)  # 출력값 : {'age': 20, 'height': 165}

a_dict 값에 'name'이라는 키와 벨류가 삭제되어 출력되는 것을 확인 할 수 있다.

딕셔너리 값 업데이트

딕셔너리의 값을 수정하려면 아래와 같이 하면 된다.

a_dict = {'name': 'happy', 'age': 20, 'height': 165}
a_dict['age'] = 30
print(a_dict)  # 출력값 : {'name': 'happy', 'age': 30, 'height': 165}

age의 값이 30으로 바뀌어 출력되는 것을 확인 할 수 있다.

+) 추가로, 딕셔너리에 특정 키 값(value아님)이 있는 지 확인해볼려면 앞서 리스트에서 한 방법과 동일하게 사용할 수 있다.

a_dict = {'name': 'happy', 'age': 20, 'height': 165}
result = ('friend' in a_dict)
print(result)   # 출력값 : False

result = ('age' in a_dict)
print(result)   # 출력값 : True

리스트와 딕셔너리에 대해서 알아봤는데, 리스트와 딕셔너리 ,,, 같이 조합해서 사용하면 더 많은 데이터를 표현할 수 있을 것 같다.

리스트와 딕셔너리

리스트와 딕셔너리를 조합하여 사용하는 예시를 한번 살펴보자.
만약 여러사람의 정보가 담긴 데이터를 저장해야할 때, 딕셔너리의 리스트가 필요할 것이다.
이를 만들어보면 아래와 같은 형태로 만들 수 있을 것이다.

people = [
	{'name': 'happy', 'age': 20, 'height': 165},
    {'name': 'sad', 'age': 30, 'height': 180},
    {'name': 'joy', 'age': 40, 'height': 170}
]

people이라는 리스트 배열의 요소 하나하나가 딕셔너리 형태로 이루어져 있는 것을 볼 수 있다. 딱봐도 활용도가 높아 보이지 않나요? ...
암튼 위에서 살펴본 내용을 통해 이렇게 응용도 가능하다는 것 !

요소를 출력하는 방법도 동일하다. 먼저 리스트의 인덱싱을 통해 특정 위치의 딕셔너리 데이터를 가지고 와서 딕셔너리의 키 값을 통해 데이터를 출력하면 된다.

print(people[0]['age'])  # 출력값 : 20
print(people[1]['height'])  # 출력값 : 180
print(people[2]['name'])  # 출력값 : 'joy'

그리고 위에서 만든 people에 새로운 사람 데이터를 추가하고 싶다면 리스트의 append()함수를 이용하여 추가할 수 있다.

new_people = {'name': 'angry', 'age': 25, 'height': 175}
people.append(new_people)

오늘은 파이썬의 리스트와 딕셔너리를 알아보았다. 리스트와 딕셔너리는 이전에 개발하면서 자주 사용했던 자료구조 형태였는데 다시 개념부터 공부해보니 언제 어떻게 사용하는 것이 효율적일지 다시한번 생각해보는 시간이 되었던 것 같다.

다음은 프로그래밍 언어의 꽃(?) 조건문과 반복문을 털어보는 시간을 가져보겠다. 👋🏻

profile
Development History

0개의 댓글