Дополнение к ассоциативному списку /20++

Практические примеры применения

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} раз")

Лого

Spartacus_85 [Admin]

Администратор сайта — это специалист, который отвечает за техническую поддержку и бесперебойную работу веб-ресурса.



0 Комментарий(я)

Зарегистрируйтесь чтобы оставить комментарий