하리Hari

6. 묶음 데이터 (배열, 사전)

여러 개의 데이터를 하나로 묶어봅시다.

데이터가 여러 개일 때 하나씩 변수를 만들면 너무 힘들겠죠? 배열(목록)을 사용해 데이터를 편리하게 묶어서 관리할 수 있어요. 아무것도 없는 빈 목록을 처음 만들 때는 '빈목록'을 [목록]인 []로 정하자처럼 타입을 명시해야 해요. 묶음 데이터를 만들 때는 [(타입)목록]이나 [(문자열, 숫자)사전]과 같이 안에 들어갈 타입을 미리 정해주는 제네릭(Generics)을 사용할 수 있답니다!

'과일'을 [(문자열)목록]인 ["사과", "포도", "바나나"]로 정하자
틀"과일 목록: {'과일'}"을 출력하자

목록에 추가하고 꺼내기

만들어진 목록 앞뒤에 새로운 값을 추가하거나 꺼낼 수 있어요.

'과일'을 [(문자열)목록]인 ["사과", "포도"]로 정하자

(참고) 새로운 과일을 추가해볼까요?
'과일' 앞에 "바나나"를 추가하자
'과일' 뒤에 "수박"을 추가하자

(참고) 과일을 꺼내볼게요!
'과일' 앞에서 꺼내자
'꺼낸과일'을 [문자열]인 '과일' 뒤에서 꺼낸 값으로 정하자

틀"남은 과일 개수: {'과일'의 '길이'}"를 출력하자
틀"첫 번째 과일: {'과일'의 1번째 값}"을 출력하자

몇 번째 값을 가져올지 숫자를 직접 쓰지 않고, 변수나 수식을 사용할 수도 있어요!

'과일'을 [(문자열)목록]인 ["딸기", "수박", "참외"]로 정하자
'인덱스'를 [숫자]인 2로 정하자

틀"선택한 과일: {'과일'의 '인덱스'번째}"를 출력하자
틀"그 다음 과일: {'과일'의 ('인덱스' + 1)번째}"를 출력하자

이름표가 있는 묶음, 사전 (Dictionary)

이름표와 값을 짝지어서 저장하고 싶을 때는 사전(키-값 쌍)을 사용해요. 제네릭을 쓰면 [(키타입, 값타입)사전]처럼 엄격하게 관리할 수 있어서 아주 유용하죠.

'점수'를 [(문자열, 숫자)사전]인 {"국어": 90, "수학": 80}으로 정하자
틀"국어 점수: {'점수'의 "국어"}"를 출력하자

사전에 있는 값을 나중에 수정할 수도 있어요. 수학 점수를 10점 더 올려볼까요?

'점수'를 [(문자열, 숫자)사전]인 {"국어": 90, "수학": 80}으로 정하자
'점수'의 "수학"에 10을 더하자

틀"오른 수학 점수: {'점수'의 "수학"}"을 출력하자

없는 데이터를 꺼내려고 하면 어떻게 될까요?

목록에 과일이 3개밖에 없는데 5번째 과일을 달라고 하거나, 사전에 없는 정보를 달라고 억지를 부리면 어떻게 될까요? 직접 에러를 내봅시다!

'과일'을 [(문자열)목록]인 ["사과", "포도"]로 정하자
(참고) 과일이 2개뿐인데 100번째 과일을 달라고 해볼게요!
'과일'의 100번째 값을 출력하자

이 코드를 실행하면 “IndexOutOfBoundsError: 목록의 길이를 벗어난 위치(인덱스)예요.” 라는 에러가 발생해요.

사전도 마찬가지랍니다.

'정보'를 [(문자열, 문자열)사전]인 {"이름": "홍길동"}으로 정하자
(참고) 정보에 없는 '직업'을 물어볼게요!
틀"직업은 {'정보'의 "직업"}입니다."를 출력하자

이러면 “KeyError: 사전에서 ‘직업’ 이름을 찾을 수 없어요.” 라고 알려준답니다. 데이터를 꺼낼 때는 꼭 있는 데이터인지 먼저 확인해야 해요!


목록 비우기

<비우기>()는 목록의 값을 전부 지워서 빈 목록으로 만들어요.

'할일'을 [(문자열)목록]인 ["청소", "빨래"]로 정하자
'할일'의 <비우기>()를 실행하자
틀"남은 할 일: {'할일'의 '길이'}개"를 출력하자

사전을 목록에 담아서 하나씩 살펴보기

같은 모양의 데이터가 여러 개라면 사전을 목록에 담고 반복문으로 하나씩 꺼내 쓰면 편해요.

'반'을 [(사전)목록]인 [{"이름": "하나", "점수": 90}, {"이름": "두리", "점수": 85}]로 정하자

'반'의 '학생'마다 반복하자:
    틀"{'학생'의 "이름"}: {'학생'의 "점수"}점"을 출력하자
놀이터
결과
코드를 작성하고 '실행' 버튼을 눌러보세요.