Как перебирать словарь в цикле python
Перейти к содержимому

Как перебирать словарь в цикле python

Перебор элементов словаря dict() в Python

9 декабря 2013 г. Archy Просмотров: 101849 RSS 2
Python для начинающих » Общие вопросы dict python, словари Python, цикл for Python

Перебор элементов словаря

Перебрать все элементы списка можно благодаря циклу for, но словари Python не являются последовательностями. В качестве примера выведем элементы словаря двумя методами. Первый способ использует метод keys(), возвращающий список всех ключей словаря. Второй способ появился в последних реализах Python. В этом случае мы просто указываем словарь в качестве параметра. На каждой интерации цикла будет возвращаться ключ, с помощью которого внутри цикла можно получить значение, соответствующее этому ключу.

Перебор элементов словаря

# -*- coding: utf-8 -*- cars = < 'BMW': 'x5', 'Mercedes-Benz': 'E220', 'Audi': 'Q7' >for key in cars: print "%s -> %s" % (key, cars[key]) print '-' * 15 print 'Пример 2' print '-' * 15 for key in cars.keys(): print "%s -> %s" % (key, cars[key])

Результат работы

Audi -> Q7 BMW -> x5 Mercedes-Benz -> E220 --------------- Пример 2 --------------- Audi -> Q7 BMW -> x5 Mercedes-Benz -> E220

Так как словари являются непорядочными структурами, элементы словаря выводятся в произвольном порядке. Чтобы вывести элементы с сортировкой по ключам, следует получить список ключей, а затем воспользоваться методом sort(). Пример:

# -*- coding: utf-8 -*- d = k = d.keys() # Список ключей k.sort() # Сортируем список ключей for key in k: print "(%s => %s)" % (key, d[key]), # Результат работы: (x => 1) (y => 2) (z => 3)

Для сортировки ключей вместо метода sort() можно воспользоваться функцией sorted(). Пример:

# -*- coding: utf-8 -*- d = for key in sorted(d.keys()): print "(%s => %s)" % (key, d[key]), # Результат: (x => 1) (y => 2) (z => 3)

Постоянно находиться в сидячем положении плохо для вашего здоровья. Многие программисты и фрилансеры которые работают дома выбрали для себя беговую дорожку winner oxygen neman которая расслабляет и дает возможность улучшить свое состояние. Если хотя бы месяц заставлять себя ходить на беговую дорожку, то можно развить у себя правильную привычку бега.

Еще записи по теме

  • Android Jelly Bean на 52% всех Android-устройств
  • Игровые автоматы и симуляторы настольных игр в PM онлайн Casino
  • Закон Мура – властелин мира!
  • Купите лайки Инстаграм дёшево на супер скорости: 8 Хит цен
  • Итерации и циклы в Python
  • Игровой автомат Secret Forest — бесплатно играть в Император казино онлайн
  • Создание нового изображения с библиотекой PIL в Python

27. Перебор элементов словаря в Python

В уроке 7.1. мы уже встречались с перебором словаря Python. В этом уроке повторим материал и познакомимся с методами items() , keys() и values() , которые пригодятся в дальнейшем.

При помощи цикла for , с которым вы познакомились в уроке 3.1. можно перебрать любой итерируемый объект, в том числе и словарь:

numbers = 

for item in numbers:
print(item, numbers[item])

Теперь разберемся с тем, что возвращают методы items() , keys() и values() :

print(numbers.items()) # => dict_items([(1, 'One'), (2, 'Two'), (3, 'Three'), (4, 'Four')])
print(numbers.keys()) # => dict_keys([1, 2, 3, 4])
print(numbers.values()) # => dict_values(['One', 'Two', 'Three', 'Four'])

Метод items() возвращает список кортежей из двух элементов. Первый элемент является ключом, второй – значением. Про кортежи мы кратко говорили в уроке 5.1. и более подробно разберемся, начиная с урока 9.1. Методы keys() и values() возвращают список ключей и список значений, соответственно.

Сначала отвлечемся и вспомним, что в Python можно инициализировать переменные, записанные через запятую, присвоив им список или кортеж соответствующего размера:

a, b, c = (1, 2, 3)

А теперь вернемся к методу items() , который возвращает кортеж, и перепишем первый пример:

numbers = 

for k, v in numbers.items():
print(k, v)

В этом уроке познакомились с методами items() , keys() и values() , которые пригодятся в следующих уроках по Python.

Циклы в Python

При написании программ часто возникает потребность делать одно и то же действие для нескольких объектов. Например, сохранить 5 пользователей:

user1.save() user2.save() user3.save() user4.save() user5.save() 

Кода пока не очень много, но что будет, когда пользователей будет 20? А что если нужно обработать 3 миллиона пользователей вашего сайта? Помогут циклы.

Цикл по списку

Цикл — это запуск одного и того же кода для каждого элемента в списке. Вот как выглядит пример выше с использованием списка и циклов:

users = [user1, user2, user3, user4, user5] for user in users: user.save() 

Каждый элемент списка users по очереди подставится в переменную user и для него запустится код с отступом.

Что, всё ещё копипастить пользователей в список? Нет, чаще всего такое не требуется и код выглядит так:

users = get_users_from_database() # возвращает список всех пользователей for user in users: user.do_something() # работа с каждым пользователем по очереди user.save() 

Снова, каждый пользователь по очереди попадёт в переменную user , у него вызовется метод .do_something() , а затем метод .save() .

Цикл по словарю

Словарь очень легко можно превратить в 2 списка:

capitals =  "Russia": "Moscow", "England": "London", "China": "Beijing", "Italy": "Rome" > 

Первый список — ключи словаря (первые элементы в парах):

print(capitals.keys()) # ['Russia', 'England', 'China', 'Italy'] 

Второй список — значения (вторые элементы в парах):

print(capitals.values()) # ['Moscow', 'London', 'Beijing', 'Rome'] 

По умолчанию, если передать в for словарь, он начнёт перебирать ключи:

for country in capitals: print(country) # Russia # England # China # Italy 

Но так же через ключи словаря можно добраться и до значений:

for country in capitals: capital = capitals[country] print("столица <> это <>".format(country,capital)) # столица Russia это Moscow # столица England это London # столица China это Beijing # столица Italy это Rome 

В Python есть ещё один способ добраться до значений словаря, использовать .items() . Этот метод превращает словарь в список кортежей:

print(capitals) # # "Russia": "Moscow", # "England": "London", # "China": "Beijing", # "Italy": "Rome" # > print(capitals.items()) # [ # ('Russia', 'Moscow'), # ('England', 'London'), # ('China', 'Beijing'), # ('Italy', 'Rome') # ] 

И теперь цикл сможет итерироваться сразу по двум переменным:

for country, capital in capitals.items(): print("столица <> это <>".format(country, capital)) # столица Russia это Moscow # столица England это London # столица China это Beijing # столица Italy это Rome 

Выполнить код несколько раз

Что, если нужно выполнить код заранее известное количество раз? например, сгенерировать 10 случайных чисел и вывести на экран? По какому такому списку мне перебиать элементы?

В таком случаевыручает функция range() .

Что она делает проще показать на примерах:

  • range(5) — вернёт список из 5 элементов, начинаяс нуля: [0, 1, 2, 3, 4]
  • range(2,10) — вернёт список из элементов от 2 до 10: [2, 3, 4, 5, 6, 7, 8, 9]
  • range(2,10,3) — вернёт список из каждого третьего элемента от 2 до 10: [2, 5, 8]

Теперь, научившись генерировать списки нужной длины, можно сгенерировать 10 случайных чисел:

import random for number in range(10): print(random.randint(1,100)) 

В терминал выведется 10 случайных чисел от 1 до 100. Работает так же, как и ранее: range(10) — это список с числами от 0 до 9. Они по очереди подставятся в переменную number , но ни на что не повлияют, т.к. в коде «внутри for » переменная number не используется.

Строка — тоже “список”

Python запросто переводит одни типы данных в другие. Он может притвориться, что строка — это список из её символов:

text = "Девман" for letter in text: print(letter) # Д # е # в # м # а # н 

Можно превратить строку в список более явно с помощью функции list() :

text = "Девман" my_list = list(text) print(my_list) # ['Д', 'е', 'в', 'м', 'а', 'н'] 

Что дальше

Попробуйте бесплатные уроки по Python

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

Переходите на страницу учебных модулей «Девмана» и выбирайте тему.

Словари в Python

Раннее были рассмотрены три встроенные коллекции, относящиеся к категории последовательностей — это строки, списки и кортежи. Теперь рассмотрим коллекции, не являющиеся последовательностью. Словарь (dictionary) представляет собой неупорядоченную коллекцию для хранения пар «ключ — значение«. Каждому ключу соответствует конкретное значение. Ключи словаря должны быть неизменяемыми, например строки, числа, кортежи, и уникальными, то есть дубликаты невозможны. Разным ключам могут соответствовать одинаковые значения.

Содержание страницы:
1.1. Создание словаря на Python
1.2. Обращение к значению, связанному с ключом в словаре
1.3. Добавление новых пар «ключ-значение»
1.4. Удаление пар «ключ-значение»
1.5. Обращение к значениям методом get()
1.6. Проверка наличия заданного ключа в словаре
2.1. Перебор пар «ключ-значение» методом items()
2.2. Перебор всех ключей в словаре методом keys()
2.3. Перебор всех значений в словаре метод values()
3. Список словарей в Python
4. Список в словаре Python
5. Словарь в словаре Python

1.1. Создание словаря на Python.

Для создания словаря заключите в фигурные скобки <> список пар «ключ-значение», разделенных запятыми, в форме ключ: значение. Значением может быть число, список, строка и даже другой словарь. В примере ниже хранится информация об одном автомобиле.

В данном примере ключом является ‘марка’, а значение ‘bmw’. Затем через запятую идет следующая пара ключ-значение и так далее. Если вы укажете ключ, то Python вернет значение, связанное с этим ключом. Ключ от значения всегда отделяется двоеточием.

1.2. Обращение к значению, связанному с ключом в словаре Python .

Для получения значения, связанного с ключом в словаре, укажите имя словаря, а затем ключ в квадратных скобках [ ] .

В данном примере возвращается значения связанных с ключом в словаре с помощью f-строк строится сообщение.

1.3. Добавление новых пар «ключ-значение»

В словарь в любой момент можно добавлять новые пары «ключ-значение». Для этого укажите имя словаря, затем в квадратных скобках новый ключ и с помощью команды присваивания укажите значение. Добавим в словарь автомобиля его цвет.

В итоге мы получили в словаре новую пару «ключ-значение» ‘цвет’: ‘белый’. Таким образом можно добавлять неограниченное количество пар.

1.4. Удаление пар «ключ-значение»

  • Для удаления пар «ключ-значение» можно воспользоваться командой del . Для этого достаточно передать имя словаря и удаляемый ключ.
  • Также пары можно удалять методом словарей pop , который возвращает значение удаляемого ключа.

>>> car_1. pop (‘mileage’)
58135
>>> print (car_1)

1.5. Обращение к значениям методом get() .

Когда вы используете синтаксис с ключом в квадратных скобках, если запрашиваемый ключ не существует, то вы получаете сообщение об ошибке. Воспользовавшись методом get() , вместо ошибки вы получите сообщение об отсутствие заданного ключа в словаре Python. В первом аргументе метода get() передайте ключ, а во втором необязательном аргументе, можно передать значение, которое должно вернуться при отсутствии ключа.

>>> car_1 =
>>> color = car_1. get (‘color’, ‘Такого ключа не существует’)
>>> print (color)
Такого ключа не существует

В результате вместо ошибки, мы получили сообщение о отсутствие ключа в словаре.

1.6. Проверка наличия заданного ключа в словаре Python.

Чтобы проверить содержит ли словарь заданный ключ, можно воспользоваться оператором in или not in :

>>> car_1 =
>>> ‘type’ in car_1
True
>>> ‘color’ in car_1
False
>>> ‘color’ not in car_1
True

2.1. Перебор пар «ключ-значение» методом items() .

Для перебора словаря можно воспользоваться циклом for за которым следует вызов метода items() , возвращающий список пар «ключ-значение». Такой вид перебора хорошо работает для словарей, хранящих один вид информации с разными ключами. В примере ниже создадим словарь связывающий месяц с количеством дней в нем. Воспользуемся f-строками и создадим условия if-else для удобного чтения окончания.

В начале в цикле for Python перебирает все пары «ключ-значение» в словаре. В процессе перебора ключ сохраняется в переменной month, а значение в переменной days. Затем создается условие, если количество дней четное, то выводится команда print с названием месяца и количества дней с окончанием «дней». Если количество не чётное, то пишется «день».

2.2. Перебор всех ключей в словаре методом keys() .

Метод keys() удобен если вы собираетесь работать с ключами в словаре. Переберем словарь и выведем все ключи в нем:

В Python перебор ключей используется по умолчанию при переборе словаря. Две записи ниже дают один и тот же результат.

Явный вызов метода keys() может упростить чтение вашего кода.

Начиная с Python 3.7 перебор содержимого словаря возвращает элементы в том порядке, в каком они вставлялись. Один из способов перебрать элементы в определенном порядке, вызвать функцию sorted() .

>>> for key in sorted( year.keys() ) :
. print (key)
.
апрель
март
февраль
январь

В результате ключи сортируются по алфавиту.

2.3. Перебор всех значений в словаре Python метод values() .

Для получения всех значений в словаре Python без ключей, используют метод values() .

В процессе перебора цикла for значения сохраняются в переменную v и затем выводятся. Значения извлекаются из словаря без проверки на повторения. Чтобы получить значения без повторений можно воспользоваться множеством set() .

3. Список словарей в Python.

В Python можно сохранить множество словарей в списки или список сделать значением элемента словаря. Создание таких сложных структур называется вложениями. Можно вложить не ограниченное количество словарей в список.

Далее создаем пустой список и добавляем в него словари.

Для удобства чтения кода можно вывести элементы списка с помощью цикла for .

В процессе работы может понадобиться изменить какой-либо элемент. Для этого также можно воспользоваться циклом for и командой if-else . К примеру, нам нужно изменить пробег и цвет автомобиля Bmw.

В результате Python перебирает список и проверяет условия, если в паре ключ: значение появляется автомобиль Bmw, то для него меняются элементы, для всех остальных ничего не изменяется.

4. Список в словаре Python.

В словарь Python можно также поместить список. Например, есть словарь с опросами посетителей на сайте, какая марка автомобиля им больше нравится. У одного человека может быть несколько ответов, как раз их можно поместить в список.

>>> favorite_cars = . ‘alex’: [ ‘bmw’, ‘audi’, ‘mersedes’ ] ,
. ‘artem’: [ ‘audi’ ] ,
. ‘phil’: [ ‘ford’, ‘porshe’ ] ,
. ‘jon’: [ ‘lada’ ]
. >
>>> for name, cars in favorite_cars.items():
. print (f»\n любит автомобили марки:»)
. for car in cars:
. print (f»\t»)
.

Alex любит автомобили марки:
Bmw
Audi
Mersedes

Artem любит автомобили марки:
Audi

Phil любит автомобили марки:
Ford
Porshe

Jon любит автомобили марки:
Lada

В процессе перебора словаря имя сохраняется в переменной name, а список в переменную cars. Выводим сообщение с помощью f-строки с именем опрашиваемого, затем с помощью цикла for перебираем элементы списка и выводим названия брендов с новой строки.

5. Словарь в словаре Python

Словарь тоже можно вложить в словарь. Например, словарь с пользователями на сайте. У каждого пользователя хранится информация о нем имя и фамилия.

>>> users =
. ‘qwerty’:
. ‘name’: ‘john’,
. ‘surname’: ‘brut’
. > ,
. ‘fill’:
. ‘name’: ‘philip’,
. ‘surname’: ‘ivanov’
. >
. >
>>> for login, user in users.items():
. print (f»\nВаш логин: «)
. fullname = f» »
. print (f»\tДобро пожаловать на сайт !»)
.

Ваш логин: qwerty
Добро пожаловать на сайт John Brut!

Ваш логин: fill
Добро пожаловать на сайт Philip Ivanov!

У нас определяется словарь users содержащий ключ- логин пользователя и значение — словарь с именем и фамилией. В процессе перебора словаря Python сохраняет ключ в переменной login, а словарь, связанный с ключом в переменной user. Выводим сообщение о логине пользователя на экран. Затем создаем переменную fullname с именем и фамилией извлеченную из словаря и выводим на экран.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *