Документация по Python. Теоретические материалы, и практические задачи

Словари в Python

Словари в Python: Основные принципы и применение

Словари в python (dictionaries) — это структуры данных в языке программирования Python, которые позволяют хранить данные в виде пар ключ-значение. Ключи в словарях уникальны, и они используются для доступа к соответствующим значениям. Давайте рассмотрим основные принципы работы со словарями и их применение.

Ниже представлен список задач по словарям. Решая практические задачи по словарям, вы закрепите свои теоретические знания на практике.

Содержание:

  1. Подсчет уникальных элементов в списке
  2. Объединение двух словарей
  3. Получение ключа с максимальным значением
  4. Поиск ключа по значению
  5. Удаление элементов из словаря
  6. Проверка наличия ключа в словаре
  7. Поиск пересечения ключей в двух словарях
  8. Обновление значений в словаре по ключу
  9. Сортировка словаря по значениям
  10. Вычисление среднего значения из словаря
  11. Проверка идентичности словарей
  12. Получение подмножества ключей
  13. Объединение значений одинаковых ключей из списка словарей
  14. Группировка элементов списка по значению
  15. Поиск всех значений, удовлетворяющих условию
  16. Проверка наличия дубликатов в словаре
  17. Объединение списков значений одинаковых ключей в словаре
  18. Обратное формирование словаря
  19. Поиск ключа с наибольшим значением
  20. Слияние словарей с обновлением значений
  21. Фильтрация словаря по условию
  22. Объединение двух списков в словарь
  23. Проверка наличия подстроки в значениях словаря
  24. Объединение значений списков по ключу
  25. Вычисление разницы между значениями словаря
  26. Фильтрация списка словарей по условию
  27. Подсчет уникальных букв в слове
  28. Сравнение двух словарей
  29. Поиск ключа с минимальным значением
  30. Вычисление суммы значений словаря

Задача 1: Подсчет уникальных элементов в списке

Описание задачи

Требуется написать функцию, которая принимает на вход список элементов и возвращает словарь, содержащий уникальные элементы списка как ключи и количество их появлений в списке как значения.

Решение задачи

                    
def count_unique_elements(input_list):
    element_count = {}
    for element in input_list:
        if element in element_count:
            element_count[element] += 1
        else:
            element_count[element] = 1
    return element_count

Задача 2: Объединение двух словарей

Описание задачи

Необходимо объединить два словаря в один, чтобы значения с одинаковыми ключами суммировались.

Решение задачи

                    
def merge_dictionaries(dict1, dict2):
    merged_dict = dict1.copy()
    for key, value in dict2.items():
        if key in merged_dict:
            merged_dict[key] += value
        else:
            merged_dict[key] = value
    return merged_dict

Задача 3: Получение ключа с максимальным значением

Описание задачи

Требуется написать функцию, которая принимает словарь и возвращает ключ с максимальным значением.

Решение задачи

                    
def key_with_max_value(input_dict):
    max_key = max(input_dict, key=input_dict.get)
    return max_key

Задача 4: Поиск ключа по значению

Описание задачи

Напишите функцию, которая принимает на вход словарь и значение, а затем возвращает список ключей, соответствующих этому значению.

Решение задачи

                    
def find_keys_by_value(input_dict, value):
    keys_list = [key for key, val in input_dict.items() if val == value]
    return keys_list

Задача 5: Удаление элементов из словаря

Описание задачи

Реализуйте функцию, которая удаляет из словаря все пары ключ-значение, где значение меньше заданного порога.

Решение задачи

                    
def remove_elements_below_threshold(input_dict, threshold):
    keys_to_remove = [key for key, value in input_dict.items() if value < threshold]
    for key in keys_to_remove:
        del input_dict[key]
    return input_dict

Задача 6: Проверка наличия ключа в словаре

Описание задачи

Напишите функцию, которая принимает словарь и ключ, и возвращает True, если такой ключ уже существует в словаре, и False в противном случае.

Решение задачи

                    
def check_key_existence(input_dict, key):
    return key in input_dict

Задача 7: Поиск пересечения ключей в двух словарях

Описание задачи

Напишите функцию, которая принимает на вход два словаря и возвращает список ключей, которые присутствуют в обоих словарях.

Решение задачи

                    
def find_common_keys(dict1, dict2):
    common_keys = [key for key in dict1.keys() if key in dict2]
    return common_keys

Задача 8: Обновление значений в словаре по ключу

Описание задачи

Реализуйте функцию, которая обновляет значение по заданному ключу в словаре. Если ключ не существует, он должен быть добавлен в словарь.

Решение задачи

                    
def update_dictionary_value(input_dict, key, new_value):
    input_dict[key] = new_value
    return input_dict

Задача 9: Сортировка словаря по значениям

Описание задачи

Напишите функцию, которая принимает на вход словарь и возвращает новый словарь, отсортированный по значениям (по возрастанию или убыванию).

Решение задачи

                    
def sort_dictionary_by_values(input_dict, reverse=False):
    sorted_dict = dict(sorted(input_dict.items(), key=lambda item: item[1], reverse=reverse))
    return sorted_dict

Задача 10: Вычисление среднего значения из словаря

Описание задачи

Напишите функцию, которая принимает на вход словарь, содержащий числовые значения, и возвращает среднее значение этих чисел.

Решение задачи

                    
def calculate_average(input_dict):
    if len(input_dict) == 0:
        return 0
    return sum(input_dict.values()) / len(input_dict)

Задача 11: Проверка идентичности словарей

Описание задачи

Реализуйте функцию для проверки идентичности двух словарей, то есть проверку на то, что они содержат одни и те же ключи и значения.

Решение задачи

                    
def check_dictionary_equality(dict1, dict2):
    return dict1 == dict2

Задача 12: Получение подмножества ключей

Описание задачи

Напишите функцию, которая принимает на вход словарь и список ключей, и возвращает новый словарь, содержащий только указанные ключи.

Решение задачи

                    
def get_subset_of_keys(input_dict, keys_list):
    subset_dict = {key: input_dict[key] for key in keys_list if key in input_dict}
    return subset_dict

Задача 13: Объединение значений одинаковых ключей из списка словарей

Описание задачи

Реализуйте функцию, которая принимает на вход список словарей и объединяет значения с одинаковыми ключами в новом словаре.

Решение задачи

                    
def merge_values_with_same_keys(dict_list):
    merged_dict = {}
    for d in dict_list:
        for key, value in d.items():
            if key in merged_dict:
                merged_dict[key] += value
            else:
                merged_dict[key] = value
    return merged_dict

Задача 14: Группировка элементов списка по значению

Описание задачи

Напишите функцию, которая принимает на вход список кортежей (ключ, значение) и возвращает словарь, в котором значения группируются по ключам.

Решение задачи

                    
def group_elements_by_value(input_list):
    grouped_dict = {}
    for key, value in input_list:
        if value in grouped_dict:
            grouped_dict[value].append(key)
        else:
            grouped_dict[value] = [key]
    return grouped_dict

Задача 15: Поиск всех значений, удовлетворяющих условию

Описание задачи

Напишите функцию, которая принимает на вход словарь и условие, а затем возвращает список всех значений, удовлетворяющих данному условию.

Решение задачи

                    
def find_values_by_condition(input_dict, condition):
    values_list = [value for value in input_dict.values() if condition(value)]
    return values_list

Задача 16: Проверка наличия дубликатов в словаре

Описание задачи

Реализуйте функцию для проверки наличия дубликатов значений в словаре.

Решение задачи

                    
def check_for_duplicates(input_dict):
    values_set = set()
    for value in input_dict.values():
        if value in values_set:
            return True
        else:
            values_set.add(value)
    return False

Задача 17: Объединение списков значений одинаковых ключей в словаре

Описание задачи

Напишите функцию, которая принимает на вход словарь, значениями которого являются списки, и объединяет списки значений с одинаковыми ключами в новом словаре.

Решение задачи

                    
def merge_lists_with_same_keys(input_dict):
    merged_dict = {}
    for key, value_list in input_dict.items():
        if key in merged_dict:
            merged_dict[key].extend(value_list)
        else:
            merged_dict[key] = value_list
    return merged_dict

Задача 18: Обратное формирование словаря

Описание задачи

Напишите функцию, которая принимает на вход словарь и возвращает новый словарь, в котором ключи и значения поменяны местами.

Решение задачи

                    
def reverse_dictionary(input_dict):
    reversed_dict = {v: k for k, v in input_dict.items()}
    return reversed_dict

Задача 19: Поиск ключа с наибольшим значением

Описание задачи

Напишите функцию, которая принимает на вход словарь и возвращает ключ с наибольшим значением.

Решение задачи

                    
def find_key_with_max_value(input_dict):
    if not input_dict:
        return None
    max_value = max(input_dict.values())
    key = [k for k, v in input_dict.items() if v == max_value][0]
    return key

Задача 20: Слияние словарей с обновлением значений

Описание задачи

Реализуйте функцию, которая принимает на вход несколько словарей и объединяет их, обновляя значения для одинаковых ключей.

Решение задачи

                    
def merge_dictionaries(*dicts):
    merged_dict = {}
    for d in dicts:
        for key, value in d.items():
            if key in merged_dict:
                merged_dict[key] += value
            else:
                merged_dict[key] = value
    return merged_dict

Задача 21: Фильтрация словаря по условию

Описание задачи

Напишите функцию, которая принимает на вход словарь и условие, а затем возвращает новый словарь, содержащий только те элементы, которые удовлетворяют условию.

Решение задачи

                    
def filter_dictionary_by_condition(input_dict, condition):
    filtered_dict = {k: v for k, v in input_dict.items() if condition(k, v)}
    return filtered_dict

Задача 22: Объединение двух списков в словарь

Описание задачи

Реализуйте функцию, которая принимает на вход два списка — один для ключей, другой для значений, и возвращает словарь, созданный из этих списков.

Решение задачи

                    
def create_dictionary(keys, values):
    combined_dict = dict(zip(keys, values))
    return combined_dict

Задача 23: Проверка наличия подстроки в значениях словаря

Описание задачи

Напишите функцию, которая принимает на вход словарь и подстроку, а затем возвращает список ключей, у которых значения содержат указанную подстроку.

Решение задачи

                    
def find_keys_by_substring_value(input_dict, substring):
    keys_with_substring = [key for key, value in input_dict.items() if substring in value]
    return keys_with_substring

Задача 24: Объединение значений списков по ключу

Описание задачи

Напишите функцию, которая принимает на вход список словарей и ключ, а затем возвращает словарь, содержащий объединенные значения всех списков по указанному ключу.

Решение задачи

                    
def merge_values_by_key(dict_list, key):
    merged_dict = {}
    for d in dict_list:
        if d[key] in merged_dict:
            merged_dict[d[key]].extend(d.values())
        else:
            merged_dict[d[key]] = list(d.values())
    return merged_dict

Задача 25: Вычисление разницы между значениями словаря

Описание задачи

Реализуйте функцию, которая принимает на вход словарь с числовыми значениями и возвращает разницу между максимальным и минимальным значением.

Решение задачи

                    
def calculate_difference_between_max_and_min(input_dict):
    values = list(input_dict.values())
    difference = max(values) - min(values)
    return difference

Задача 26: Фильтрация списка словарей по условию

Описание задачи

Напишите функцию, которая принимает на вход список словарей и условие, а затем возвращает новый список, содержащий только те словари, удовлетворяющие условию.

Решение задачи

                    
def filter_list_of_dictionaries_by_condition(list_of_dicts, condition):
    filtered_list = [d for d in list_of_dicts if condition(d)]
    return filtered_list

Задача 27: Подсчет уникальных букв в слове

Описание задачи

Напишите функцию, которая принимает на вход слово и возвращает словарь, содержащий уникальные буквы слова в качестве ключей и количество их появлений в слове в качестве значений.

Решение задачи

                    
def count_unique_letters(word):
    letter_count = {}
    for letter in word:
        if letter in letter_count:
            letter_count[letter] += 1
        else:
            letter_count[letter] = 1
    return letter_count

Задача 28: Сравнение двух словарей

Описание задачи

Реализуйте функцию, которая принимает на вход два словаря и возвращает True, если они содержат одинаковые ключи и значения, и False в противном случае.

Решение задачи

                    
def compare_dictionaries(dict1, dict2):
    return dict1 == dict2

Задача 29: Поиск ключа с минимальным значением

Описание задачи

Напишите функцию, которая принимает на вход словарь с числовыми значениями и возвращает ключ с минимальным значением.

Решение задачи

                    
def find_key_with_min_value(input_dict):
    if not input_dict:
        return None
    min_value = min(input_dict.values())
    key = [k for k, v in input_dict.items() if v == min_value][0]
    return key

Задача 30: Вычисление суммы значений словаря

Описание задачи

Напишите функцию, которая принимает на вход словарь с числовыми значениями и возвращает сумму всех значений словаря.

Решение задачи

                    
def calculate_sum_of_values(input_dict):
    return sum(input_dict.values())