Практические примеры применения
1. Система учета студентов
# Создание системы учета студентов и их оценок
class StudentGradeSystem:
def __init__(self):
self.students = []
def add_student(self, name, grade):
self.students.append((name, grade))
def get_grade(self, name):
for student_name, grade in self.students:
if student_name.lower() == name.lower():
return grade
return None
def calculate_average(self):
if not self.students:
return 0
total = sum(grade for name, grade in self.students)
return total / len(self.students)
def get_top_students(self, count=3):
sorted_students = sorted(self.students, key=lambda x: x[1], reverse=True)
return sorted_students[:count]
# Использование системы
grade_system = StudentGradeSystem()
# Добавляем студентов
grade_system.add_student("alex", 88)
grade_system.add_student("maria", 95)
grade_system.add_student("tom", 82)
grade_system.add_student("lisa", 91)
print(f"Оценка Alex: {grade_system.get_grade('alex')}")
print(f"Средняя оценка: {grade_system.calculate_average():.2f}")
print(f"Топ-3 студента: {grade_system.get_top_students()}")
2. Словарь переводов
# Простой словарь для перевода слов
translation_dict = [
("hello", "привет"),
("world", "мир"),
("computer", "компьютер"),
("program", "программа"),
("language", "язык")
]
def translate_word(word, dictionary):
"""Перевод слова с использованием ассоциативного списка"""
word_lower = word.lower()
for english, russian in dictionary:
if english == word_lower:
return russian
return f"Перевод для '{word}' не найден"
# Примеры перевода
words_to_translate = ["hello", "computer", "unknown"]
for word in words_to_translate:
translation = translate_word(word, translation_dict)
print(f"{word} -> {translation}")
3. Конфигурационные настройки
# Система управления конфигурацией приложения
class ConfigManager:
def __init__(self):
self.config = [
("database_host", "localhost"),
("database_port", 5432),
("debug_mode", True),
("max_connections", 100),
("timeout", 30)
]
def get_setting(self, key):
for setting_key, value in self.config:
if setting_key == key:
return value
raise KeyError(f"Настройка '{key}' не найдена")
def update_setting(self, key, new_value):
for i, (setting_key, value) in enumerate(self.config):
if setting_key == key:
self.config[i] = (setting_key, new_value)
return
# Если настройка не найдена, добавляем новую
self.config.append((key, new_value))
def get_all_settings(self):
return dict(self.config)
# Использование менеджера конфигурации
config = ConfigManager()
print(f"Хост базы данных: {config.get_setting('database_host')}")
print(f"Режим отладки: {config.get_setting('debug_mode')}")
# Обновляем настройку
config.update_setting("timeout", 45)
config.update_setting("new_feature_enabled", False)
print("Все настройки:", config.get_all_settings())
Сравнение производительности
Важно понимать разницу в производительности между различными подходами:
import time
# Создаем большой ассоциативный список
large_list = [(f"key_{i}", i) for i in range(10000)]
# Создаем аналогичный словарь
large_dict = {f"key_{i}": i for i in range(10000)}
# Функция поиска в списке
def search_in_list(assoc_list, key):
for k, v in assoc_list:
if k == key:
return v
return None
# Тестируем время поиска
test_key = "key_5000"
# Поиск в списке
start_time = time.time()
for _ in range(1000):
result = search_in_list(large_list, test_key)
list_time = time.time() - start_time
# Поиск в словаре
start_time = time.time()
for _ in range(1000):
result = large_dict.get(test_key)
dict_time = time.time() - start_time
print(f"Время поиска в списке: {list_time:.4f} секунд")
print(f"Время поиска в словаре: {dict_time:.4f} секунд")
print(f"Словарь быстрее в {list_time / dict_time:.1f} раз")
0 Комментарий(я)
Зарегистрируйтесь чтобы оставить комментарий