Словари в Python: Основные принципы и применение
Словари в python (dictionaries) — это структуры данных в языке программирования Python, которые позволяют хранить данные в виде пар ключ-значение. Ключи в словарях уникальны, и они используются для доступа к соответствующим значениям. Давайте рассмотрим основные принципы работы со словарями и их применение.
Ниже представлен список задач по словарям. Решая практические задачи по словарям, вы закрепите свои теоретические знания на практике.
Содержание:
- Подсчет уникальных элементов в списке
- Объединение двух словарей
- Получение ключа с максимальным значением
- Поиск ключа по значению
- Удаление элементов из словаря
- Проверка наличия ключа в словаре
- Поиск пересечения ключей в двух словарях
- Обновление значений в словаре по ключу
- Сортировка словаря по значениям
- Вычисление среднего значения из словаря
- Проверка идентичности словарей
- Получение подмножества ключей
- Объединение значений одинаковых ключей из списка словарей
- Группировка элементов списка по значению
- Поиск всех значений, удовлетворяющих условию
- Проверка наличия дубликатов в словаре
- Объединение списков значений одинаковых ключей в словаре
- Обратное формирование словаря
- Поиск ключа с наибольшим значением
- Слияние словарей с обновлением значений
- Фильтрация словаря по условию
- Объединение двух списков в словарь
- Проверка наличия подстроки в значениях словаря
- Объединение значений списков по ключу
- Вычисление разницы между значениями словаря
- Фильтрация списка словарей по условию
- Подсчет уникальных букв в слове
- Сравнение двух словарей
- Поиск ключа с минимальным значением
- Вычисление суммы значений словаря
Задача 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())
