Python은 강력하고 유연한 데이터 구조를 제공하는 프로그래밍 언어입니다. 그 중에서도 리스트와 딕셔너리는 가장 자주 사용되는 기본 데이터 구조입니다. 이 글에서는 Python 리스트와 딕셔너리의 정의, 주요 기능, 그리고 활용 방법에 대해 자세히 살펴보겠습니다.
1. 리스트 (List)
리스트는 순서가 있는 변경 가능한 데이터 구조로, 다양한 타입의 데이터를 저장할 수 있습니다. 리스트는 대괄호 []
로 정의하고, 요소는 쉼표 ,
로 구분합니다.
fruits = ["apple", "banana", "cherry"]
1.1 리스트의 주요 기능
- 요소 접근: 리스트의 요소는 인덱스를 사용하여 접근할 수 있습니다. 인덱스는 0부터 시작합니다.
print(fruits[0]) # apple print(fruits[1]) # banana print(fruits[2]) # cherry
- 요소 추가:
append()
메서드를 사용하여 리스트의 끝에 요소를 추가할 수 있습니다.fruits.append("orange") print(fruits) # ["apple", "banana", "cherry", "orange"]
- 요소 삽입:
insert()
메서드를 사용하여 특정 위치에 요소를 삽입할 수 있습니다.fruits.insert(1, "blueberry") print(fruits) # ["apple", "blueberry", "banana", "cherry", "orange"]
- 요소 제거:
remove()
메서드를 사용하여 특정 요소를 제거할 수 있습니다.fruits.remove("banana") print(fruits) # ["apple", "blueberry", "cherry", "orange"]
- 요소 삭제:
del
키워드를 사용하여 특정 인덱스의 요소를 삭제할 수 있습니다.del fruits[0] print(fruits) # ["blueberry", "cherry", "orange"]
- 리스트 슬라이싱: 리스트의 부분집합을 추출할 수 있습니다.
print(fruits[1:3]) # ["cherry", "orange"]
- 리스트 길이:
len()
함수를 사용하여 리스트의 길이를 구할 수 있습니다.print(len(fruits)) # 3
1.2 리스트의 반복문 활용
리스트의 요소를 반복문을 사용하여 처리할 수 있습니다.
for fruit in fruits:
print(fruit)
이 코드는 리스트의 모든 요소를 하나씩 출력합니다.
1.3 리스트의 컴프리헨션
리스트 컴프리헨션은 간결하고 직관적으로 새로운 리스트를 생성할 수 있는 방법입니다.
numbers = [1, 2, 3, 4, 5]
squared_numbers = [x**2 for x in numbers]
print(squared_numbers) # [1, 4, 9, 16, 25]
2. 딕셔너리 (Dictionary)
딕셔너리는 키-값(key-value) 쌍으로 데이터를 저장하는 구조로, 순서가 없고 변경 가능한 데이터 구조입니다. 딕셔너리는 중괄호 {}
로 정의하고, 콜론 :
을 사용하여 키와 값을 구분합니다.
person = {
"name": "Alice",
"age": 25,
"city": "New York"
}
2.1 딕셔너리의 주요 기능
- 값 접근: 딕셔너리의 값은 키를 사용하여 접근할 수 있습니다.
print(person["name"]) # Alice print(person["age"]) # 25
- 값 추가 및 변경: 딕셔너리에 새로운 키-값 쌍을 추가하거나 기존 값을 변경할 수 있습니다.
person["email"] = "alice@example.com" person["age"] = 26 print(person) # {"name": "Alice", "age": 26, "city": "New York", "email": "alice@example.com"}
- 값 삭제:
del
키워드를 사용하여 특정 키-값 쌍을 삭제할 수 있습니다.del person["city"] print(person) # {"name": "Alice", "age": 26, "email": "alice@example.com"}
- 키 목록:
keys()
메서드를 사용하여 딕셔너리의 모든 키를 얻을 수 있습니다.print(person.keys()) # dict_keys(["name", "age", "email"])
- 값 목록:
values()
메서드를 사용하여 딕셔너리의 모든 값을 얻을 수 있습니다.print(person.values()) # dict_values(["Alice", 26, "alice@example.com"])
- 키-값 쌍 목록:
items()
메서드를 사용하여 딕셔너리의 모든 키-값 쌍을 얻을 수 있습니다.print(person.items()) # dict_items([("name", "Alice"), ("age", 26), ("email", "alice@example.com")])
2.2 딕셔너리의 반복문 활용
딕셔너리의 키와 값을 반복문을 사용하여 처리할 수 있습니다.
for key, value in person.items():
print(f"{key}: {value}")
이 코드는 딕셔너리의 모든 키-값 쌍을 하나씩 출력합니다.
3. 리스트와 딕셔너리의 응용
리스트와 딕셔너리를 조합하여 복잡한 데이터 구조를 만들 수 있습니다. 예를 들어, 여러 사람의 정보를 저장하는 리스트를 만들 수 있습니다.
people = [
{"name": "Alice", "age": 25, "city": "New York"},
{"name": "Bob", "age": 30, "city": "San Francisco"},
{"name": "Charlie", "age": 35, "city": "Chicago"}
]
for person in people:
print(f"{person['name']}님은 {person['age']}살이고, {person['city']}에 거주합니다.")
이 코드는 리스트 안에 여러 딕셔너리를 포함하여, 각 사람의 정보를 저장하고 출력합니다.
4. 실용적인 예제
리스트와 딕셔너리를 사용하여 학생들의 성적을 관리하는 프로그램을 만들어 보겠습니다.
students = [
{"name": "Alice", "scores": {"math": 90, "english": 85}},
{"name": "Bob", "scores": {"math": 75, "english": 80}},
{"name": "Charlie", "scores": {"math": 60, "english": 70}}
]
def get_average_score(scores):
total = sum(scores.values())
count = len(scores)
return total / count
for student in students:
average_score = get_average_score(student["scores"])
print(f"{student['name']}님의 평균 점수는 {average_score:.2f}입니다.")
이 코드는 각 학생의 과목별 점수를 딕셔너리로 저장하고, 리스트에 학생들을 추가합니다. get_average_score
함수는 점수 딕셔너리를 받아 평균 점수를 계산합니다. 프로그램은 각 학생의 평균 점수를 출력합니다.
결론
Python 리스트와 딕셔너리는 데이터를 효율적으로 저장하고 관리할 수 있는 강력한 도구입니다. 리스트는 순서가 있는 데이터 구조로 다양한 타입의 데이터를 저장할 수 있으며, 딕셔너리는 키-값 쌍으로 데이터를 저장하여 효율적인 데이터 조회와 관리를 가능하게 합니다. 리스트와 딕셔너리를 잘 활용하면 복잡한 데이터 구조를 손쉽게 처리할 수 있습니다. 이번 글을 통해 리스트와 딕셔너리의 기본 개념과 활용법을 이해하고, 다양한 프로젝트에 적용해보세요. Python의 유연성과 강력한 기능을 통해 더 효율적이고 가독성 높은 코드를 작성할 수 있을 것입니다.