Как использовать итерирование в Python для словарей?
Как итерироваться по словарю в Python
__автор: Леоданис Позо Рамос __, 28 августа 2023
Введение
Крепкие знания итерации по словарям помогут вам писать лучший и более надежный код. Ваш путь к итерации по словарю будет включать несколько примеров, которые помогут вам освоить эту тему.
Начало работы с словарями в Python
Шаг 1: Определение словаря
В данном примере определяется словарь person
, содержащий информацию о человеке, включая имя, возраст и город.
Шаг 2: Итерация по словарю
Этот код итерирует по ключам словаря person
и выводит их на экран.
Шаг 3: Доступ к значениям словаря
Для каждого ключа в словаре person
мы получаем значение и выводим его на экран.
Шаг 4: Итерация по парам (ключ, значение)
В этом примере мы используем метод .items()
, который возвращает пары (ключ, значение) для каждого элемента словаря person
. Мы итерируем по этим парам и выводим их на экран.
Шаг 5: Получение только ключей словаря
Этот код использовует метод .keys()
, который возвращает все ключи словаря person
. Мы итерируем по этим ключам и выводим их на экран.
Шаг 6: Получение только значений словаря
В данном примере мы используем метод .values()
, который возвращает все значения словаря person
. Мы итерируем по этим значениям и выводим их на экран.
Изменение значений словаря во время итерации
Шаг 1: Изменение значений словаря
В этом примере мы изменяем значения словаря person
, присваивая им новое значение ‘Unknown’ с помощью оператора присваивания =
. Затем мы выводим измененный словарь на экран.
Безопасное удаление элементов из словаря во время итерации
Шаг 1: Удаление элементов из словаря
В этом примере мы создаем список to_remove
, в котором будем хранить ключи, которые хотим удалить из словаря person
. Затем мы итерируем по парам (ключ, значение) и проверяем, является ли значение ‘Unknown’. Если это так, мы добавляем ключ в список to_remove
. Затем мы итерируем по списку to_remove
и удаляем все найденные ключи из словаря person
. Наконец, мы выводим измененный словарь на экран.
Итерация через словари: примеры с использованием цикла for
Шаг 1: Фильтрация элементов по их значению
В данном примере мы используем условие value < 30
, чтобы отфильтровать элементы словаря person
. Мы выводим ключи, соответствующие значениям, меньшим 30.
Шаг 2: Выполнение вычислений с ключами и значениями
В этом примере мы используем условие key == 'age'
, чтобы найти ключ 'age'
в словаре person
. Затем мы складываем все значения, соответствующие этому ключу, и выводим результат.
Шаг 3: Обмен ключей и значений при помощи итерации
В данном примере мы создаем новый словарь swapped
, в котором ключи и значения переключены местами. Мы итерируем по парам (ключ, значение) и добавляем элементы в новый словарь, используя значение в качестве ключа и ключ в качестве значения. Результат выводится на экран.
Итерация через словари: примеры с использованием генераторов
Шаг 1: Фильтрация элементов по их значению: повторное использование
В этом примере мы используем генератор словаря для фильтрации элементов словаря person
. Мы создаем словарь filtered
, включающий только те пары (ключ, значение), для которых значение меньше 30.
Шаг 2: Обмен ключей и значений при помощи итерации: повторное использование
В данном примере мы используем генератор словаря для обмена ключей и значений словаря person
. Мы создаем словарь swapped
, в котором ключи и значения переключены местами.
Обход словаря в отсортированном и обратном порядке
Шаг 1: Обход отсортированных ключей
В этом примере мы использовали функцию sorted()
, чтобы получить отсортированный список ключей словаря person
. Затем мы итерируем по этому списку и выводим каждый ключ на экран.
Шаг 2: Обход отсортированных значений
В данном примере мы использовали функцию sorted()
, чтобы получить отсортированный список значений словаря person
. Затем мы итерируем по этому списку и выводим каждое значение на экран.
Шаг 3: Сортировка словаря при помощи генератора
В этом примере мы использовали генератор словаря для создания нового словаря sorted_dict
, в котором ключи отсортированы в алфавитном порядке. Мы использовали функцию sorted()
, чтобы получить отсортированный список пар (ключ, значение), а затем создали словарь из этого списка.
Шаг 4: Обход словаря в обратном отсортированном порядке
В этом примере мы использовали функцию sorted()
с аргументом reverse=True
, чтобы получить отсортированный список ключей словаря person
в обратном порядке. Затем мы итерируем по этому списку и выводим каждый ключ на экран.
Шаг 5: Обход словаря в обратном порядке
В данном примере мы использовали функцию reversed()
, чтобы получить обратный список ключей словаря person
. Затем мы итерируем по этому списку и выводим каждый ключ на экран.
Итерация по словарю при помощи метода .popitem()
Шаг 1: Итерация по словарю при помощи .popitem()
В этом примере мы используем метод .popitem()
, чтобы последовательно извлекать пары (ключ, значение) из словаря person
. Мы продолжаем итерацию до тех пор, пока словарь не опустеет, и выводим каждую пару на экран.
Использование встроенных функций для неявной итерации по словарям
Шаг 1: Применение преобразования к элементам словаря: map()
В данном примере мы используем функцию map()
, чтобы создать новый список squared_values
, включающий квадраты значений словаря person
. Мы передаем лямбда-функцию lambda x: x**2
в качестве аргумента к map()
, чтобы применить это преобразование к каждому значению.
Шаг 2: Фильтрация элементов словаря: filter()
В этом примере мы используем функцию filter()
, чтобы создать новый список filtered_values
, включающий только значения, меньшие 30. Мы передаем лямбда-функцию lambda x: x < 30
в качестве аргумента функции filter()
, чтобы отфильтровать значения person.values()
.
Обход нескольких словарей как одного целого
Шаг 1: Обход нескольких словарей с помощью ChainMap
В этом примере мы используем класс ChainMap
из модуля collections
, чтобы объединить два словаря dict_1
и dict_2
в один общий словарь combined_dict
. Затем мы итерируем по парам (ключ, значение) в этом объединенном словаре и выводим их на экран.
Шаг 2: Обход цепочки словарей с помощью chain()
В данном примере мы используем функцию chain()
из модуля itertools
, чтобы создать одну последовательность пар (ключ, значение) из словарей dict_1
и dict_2
. Затем мы итерируем по этой последовательности и выводим каждую пару на экран.
Циклический обход объединенных словарей: оператор распаковки (**)
Шаг 1: Обход объединенных словарей с помощью оператора распаковки (**)
В этом примере мы используем оператор распаковки **
, чтобы объединить словари dict_1
и dict_2
в один общий словарь combined_dict
. Затем мы итерируем по парам (ключ, значение) в этом объединенном словаре и выводим их на экран.
Выводы
В этом руководстве вы узнали, как итерироваться по словарю в Python. Различные методы и подходы были представлены, такие как итерация по ключам, значениям и парам (ключ, значение), использование генераторов и встроенных функций, фильтрация элементов, обход нескольких словарей и т.д. Знание этих техник позволит вам писать более эффективный и читаемый код на Python.