На этом шаге мы рассмотрим различные способы перебора словаря.
Перебрать все элементы словаря можно с помощью цикла for, хотя словари и не являются последовательностями. Для примера выведем элементы словаря двумя способами. Первый способ использует метод keys (), возвращающий объект с ключами словаря. Во втором случае мы просто указываем словарь в качестве параметра. На каждой итерации цикла будет возвращаться ключ, с помощью которого внутри цикла можно получить значение, соответствующее этому ключу:
d = {"х": 1, "у": 2, "z": 3} for key in d.keys(): # Использование метода keys() print("({0} => {1})".format(key, d[key]), end=" ") # Выведет: (у => 2) (x => 1) (z => 3) print() # Вставляем символ перевода строки for key in d: # Словари также поддерживают итерации print("({0} => {1})".format(key, d[key]), end=" ") # Выведет: (у => 2) (x => 1) (z => 3)
Результат работы приложения приведен на рисунке 1.
Рис.1. Результат работы приложения
Поскольку словари являются неупорядоченными структурами, элементы словаря выводятся в произвольном порядке. Чтобы вывести элементы с сортировкой по ключам, следует получить список ключей, а затем воспользоваться методом sort ().
Пример:
d = {"х": 1, "у": 2, "z": 3} k = list(d.keys()) # Получаем список ключей k.sort() # Сортируем список ключей for key in k: print("({0} => {1})".format(key, d[key]), end=" ") # Выведет: (x => 1) (y => 2) (z => 3)
Результат работы приложения приведен на рисунке 2.
Рис.2. Результат работы приложения
Для сортировки ключей вместо метода sort () можно воспользоваться функцией sorted(). Пример:
d = {"х": 1, "у": 2, "z": 3} for key in sorted(d.keys()): print("({0} => {1})".format(key, d[key]), end=" ") # Выведет: (x => 1) (y => 2) (z => 3)
Так как на каждой итерации возвращается ключ словаря, функции sorted () можно сразу передать объект словаря, а не результат выполнения метода keys():
d = {"х": 1, "у": 2, "z": 3} for key in sorted(d): print("({0} => {1})".format(key, d[key]), end=" ") # Выведет: (x => 1) (y => 2) (z => 3)
На следующем шаге мы рассмотрим методы для работы со словарями.