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

Как заполнить словарь python через цикл

  • автор:

Словари в Python

Словарь — неупорядоченная структура данных, которая позволяет хранить пары «ключ — значение».

# Создание словаря c помощью литерала

student = < 'name' : 'Ivan' , 'age' : 12 >
credentials =

# Создание словаря c помощью функции dict()

student = dict ( name = ‘Ivan’ , age = 12 )
credentials = dict ( email = ‘hacker1337@mail.ru’ , password = ‘123456’ )

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

# Получаем значение с ключом ‘name’

student = dict ( name = ‘Ivan’ , age = 12 )
print (student[ ‘name’ ]) # -> Ivan

Обновление существующих значений происходит абсолютно также.

# Получаем значение с ключом ‘name’

student = dict ( name = ‘Ivan’ , age = 12 )
student[ ‘name’ ] = ‘Vasya’

print (student[ ‘name’ ]) # -> Vasya

Для удаления ключа и соответствующего значения из словаря можно использовать del

# Удаление ключа ‘age’

student = dict ( name = ‘Ivan’ , age = 12 )
del student[ ‘age’ ]

Метод get() возвращает значение по указанному ключу. Если указанного ключа не существует, метод вернёт None. Также можно указать значение по умолчанию, которое будет возвращено вместо None, если ключа в словаре не окажется.

# Использование метода get()

student = dict ( name = ‘Ivan’ , age = 12 )

print (student. get ( ‘name’ )) # -> Ivan
print (student. get ( ‘lastname’ )) # -> None
print (student. get ( ‘lastname’ , ‘No key’ )) # -> No key

Метод pop() удаляет ключ и возвращает соответствующее ему значение.

# Использование метода pop()

sneakers = dict ( brand = ‘Adidas’ , price = ‘9990 RUB’ , model = ‘Nite Jogger’ )

model = sneakers. pop ( ‘model’ )

Метод keys() возвращает специальную коллекцию ключей в словаре.

# Использование метода keys()

sneakers = dict ( brand = ‘Adidas’ , price = ‘9990 RUB’ , model = ‘Nite Jogger’ )

print (sneakers. keys ()) # -> dict_keys([‘brand’, ‘price’, ‘model’])

# dict_keys — это неизменяемая коллекция элементов.

keys = list (sneakers. keys ())
print (keys) # -> [‘brand’, ‘price’, ‘model’]

Метод values() возвращает специальную коллекцию значений в словаре.

# Использование метода values()

sneakers = dict ( brand = ‘Adidas’ , price = ‘9990 RUB’ , model = ‘Nite Jogger’ )

print (sneakers. values ()) # -> dict_values([‘Adidas’, ‘9990 RUB’, ‘Nite Jogger’])

# dict_values — это неизменяемая коллекция элементов.

values = list (sneakers. values ())
print (values) # -> [‘Adidas’, ‘9990 RUB’, ‘Nite Jogger’]

Метод items() возвращает пары «ключ — значение» в формате кортежей.

# Использование метода items()

sneakers = dict ( brand = ‘Adidas’ , price = ‘9990 RUB’ , model = ‘Nite Jogger’ )

print (sneakers. items ()) # -> dict_items([(‘brand’, ‘Adidas’), (‘price’, ‘9990 RUB’), (‘model’, ‘Nite Jogger’)])

# dict_items — это неизменяемая коллекция элементов.

items = list (sneakers. items ())
print (items) # -> [(‘brand’, ‘Adidas’), (‘price’, ‘9990 RUB’), (‘model’, ‘Nite Jogger’)]

sneakers = dict ( brand = ‘Adidas’ , price = ‘9990 RUB’ , model = ‘Nite Jogger’ )

# Вывод ключей словаря с помощью цикла for

f or key in sneakers:
print (key)

# -> brand
# -> price
# -> model

# Вывод значений словаря с помощью цикла for

f or value in sneakers. values ():
print (value)

# -> Adidas
# -> 9990 RUB
# -> Nite Jogger

# Вывод ключей и значений словаря с помощью цикла for

f or key, value in sneakers. items ():
print (key, value)

# -> brand Adidas
# -> price 9990 RUB
# -> model Nite Jogger

Метод setdefault() возвращает значение ключа, но если его нет, создает ключ с указанным значением (по умолчанию None).

# Метод setdefault()

student = dict ( name = ‘Ivan’ , age = 12 )
student. setdefault ( ‘lastname’ , ‘Ivanov’ )

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

# Пользователь вводит имя, фамилия, возраст. Создайте словарь user и запишите данные пользователя в него.
firstname = input ( ‘Enter your firstname: ‘ )
lastname = input ( ‘Enter your lastname: ‘ )
age = input ( ‘Enter your age: ‘ )

user = dict ( firstname = firstname, lastname = lastname, age = age)
print (user)

# Выведите самое часто встречающееся слово в введенной строке.
list_of_words = [ ‘hello’ , ‘hello’ , ‘hi’ ]
words = <>

f or word in list_of_words:
words[word] = words. get (word, 0 ) + 1

# Функция max может получать функцию в качестве второго аргумента
freq_word = max (words, key = words.get)

Задачи для самостоятельного решения

Пользователь вводит число K — количество фруктов. Затем он вводит K фруктов в формате: название фрукта и его количество. Добавьте все фрукты в словарь, где название фрукта — это ключ, а количество — значение. Например:

# Ввод:
>> 3 # Количество фруктов
>> Яблоко
>> 3
>> Апельсин
>> 3
>> Мандарин
>> 10
# Вывод:
>>

2. Старший и младший

Пользователь вводит число N. Затем он вводит личные данные (имя и возраст) своих N друзей. Создайте список friends и добавьте в него N словарей с ключами name и age. Найдите самого младшего из друзей и выведите его имя.

# Ввод:
>> 3 # Количество друзей
>> Иван
>> 11
>> Саша
>> 12
>> Леша
>> 10
# Вывод:
>> Леша

3. Еще немного о друзьях

Пользователь вводит число N. Затем он вводит личные данные (имя и возраст) своих N друзей. Создайте список friends и добавьте в него N словарей с ключами name и age. Выведите средний возраст всех друзей и самое длинное имя.

# Ввод:
>> 3 # Количество друзей
>> Иван
>> 12
>> Иннокентий
>> 20
>> Леша
>> 10
# Вывод:
>> 14
>> Иннокентий

4. Английский словарь

«Пора учить английский язык», — сказал себе Степа и решил написать программу для изучения английского языка. Программа получает на вход слово на английском языке и несколько его переводов на русском языке. Составьте словарь, в котором ключ — это английское слово, а значение — это список русских слов. В этой задаче нужно использовать строчный метод split().

# Ввод:
>> 4 # Количество слов
>> apple — яблоко
>> orange — оранжевый, рыжий, апельсин
>> grape — виноград, виноградный, гроздь
>> easy — простой, легкий, нетрудный, удобный, несложный
# Вывод:
>>

Создание словаря с помощью цикла в python, в чем ошибка?

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

Мой код:
for z in range(1, 21):
new_dict =
y = z + 1
new_dict.update()
if z == 21:
break

На выходе получается:

Не понимаю почему z не приравнивается поочередно числам от 1 до 20 и не добавляются новые значения в цикл, почему при значении z = 21 цикл не прекратился
Вроде все должно быть так:
<1: 1, 2: 4, 3: 9, 4: 16 . >и т д до 20: 400

Словарь

Словари, наряду со списками, кортежами и множествами, также входят в состав коллекций (collections), т.е. структур данных, содержащих несколько элементов. Мы уже начали изучать словари на пятом занятии вводного курса. Продолжим этот путь.

Понятие словаря в Питоне

Словарь — неупорядоченный набор элементов с доступом по ключу.

словарь в Питоне

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

Пустой словарь можно инициализировать через фигурные скобки < >или функцию dict().

Словарь можно сразу заполнить ключами и значениями.

Словарь можно также создать из вложенных списков.

Иногда бывает полезно создать словарь с заранее известными ключами и заданным значением. В этом нам поможет метод .fromkeys().

Ключи и значения словаря

Ключами словаря могут быть только неизменяемые типы данных. Например, строки, числа, кортежи или логические значения (Boolean). Кроме того, ключи должны быть уникальными и соответственно не могут повторяться.

Значения словаря, наоборот, могут состоять из чисел, строк, пропущенных (NaN) и логических значений, значения типа None, списков, массивов Numpy и вложенных словарей.

Методы .keys(), .values() и .items()

Создадим словарь с данными сотрудника.

Как мы уже знаем, доступ к ключам и значениям можно получить через методы .keys() и .values() соответственно.

Метод .items() возвращает и то, и другое в формате списка из кортежей.

Использование цикла for

Ключи и значения словаря удобно просматривать с помощью цикла for и метода .items().

Как мы уже знаем, если записать результат метода .items() в одну переменную, будут выведены кортежи из ключа и значения.

Использование в цикле for методов .keys() и .values() выводит только ключи или только значения соответственно.

Доступ по ключу и метод .get()

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

Если такого ключа нет, Питон выдаст ошибку.

ошибка при вызове несуществующего словаря

Для того чтобы этого не произошло, можно использовать метод .get(). Он также выводит значение по ключу.

Если ключа в словаре нет, метод .get() возвращает значение None.

Проверка наличия ключа и значения в словаре

С помощью оператора in мы можем проверить наличие определенного ключа в словаре.

Важно сказать, что оператор in работает быстрее метода .get().

Метод .values() поможет проверить наличие определенного значения.

Метод .items() поможет проверить наличие пары ключ : значение. Обратите внимание, эту пару мы записываем в форме кортежа.

Операции со словарями

Добавление и изменение элементов

Добавить элемент можно, передав новому ключу новое значение.

Изменить элемент можно передав существующему ключу новое значение.

Метод .update() позволяет соединить два словаря.

Метод .setdefault() не изменяет значение, если указанный ключ уже содержится в словаре.

Если такого ключа нет, ключ и соответствующее значение будут добавлены в словарь.

Удаление элементов

Метод .pop() удаляет элемент по ключу и выводит удаляемое значение.

Убедимся, что этой пары ключа и значения больше нет в словаре.

Ключевое слово del также удаляет элемент по ключу.

Метод .popitem() удаляет и выводит последний добавленный в словарь элемент.

Метод .clear() удаляет все ключи и значения и возвращает пустой словарь.

Ключевое слово del также позволяет удалить словарь целиком.

ошибка при попытке вывести удаленный словарь

Сортировка словарей

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

Отсортируем ключи этого словаря.

Теперь отсортируем значения с помощью метода .values().

Если мы хотим отсортировать пары ключ : значение по ключу или по значению, вначале воспользуемся методом .items() для извлечения этих пар (кортежей) из словаря.

Затем мы укажем эти кортежи в качестве первого аргумента функции sorted(). Параметру key этой же функции мы передадим lambda-функцию, которая вернет либо ключ lambda x : x [ 0 ] каждого кортежа, либо его значение lambda x : x [ 1 ] . Именно по ним и будет произведена сортировка.

Копирование словарей

Копирование объектов в Питоне (не только словарей) осуществляется с помощью метода .copy().

Как мы видим, исходный словарь не изменился. Так и должно быть.

Теперь давайте попробуем скопировать словарь с помощью оператора присваивания = .

Данные были удалены из обоих словарей. Так быть не должно и поэтому такой метод копирования использовать не стоит.

Функция dir()

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

Вначале всегда идут так называемые специальные методы. Они начинаются и заканчиваются символом двойного подчеркивания __ .

Например, когда мы вызываем функцию print() и передаем ей словарь.

На самом деле мы применяем к словарю метод __str__ ( ) .

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

В частности, со всеми этими методами словаря мы уже познакомились.

Dict comprehension

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

Основной целью использования как list, так и dict comprehension является упрощение и повышение читаемости кода.

Приведем базовую схему dict comprehension.

схема dict comprehension в Питоне

Посмотрим на два несложных примера.

В первом примере умножим каждое значение на два.

Во втором примере сделаем символы всех ключей заглавными с помощью метода .upper().

Теперь предположим, мы хотим отсортировать те пары, в которых значение больше двух, но меньше шести.

Если бы мы выполняли эту задачу с помощью цикла for, то использовали бы оператор И.

Как и в случае list comprehension, применение условия if-else несколько меняет изначальную схему. Предположим, мы хотим определить, какие из значений четные, а какие нечетные.

Dict comprehension можно использовать вместо метода .fromkeys().

Дополнительные примеры

lambda-функция, функции map() и zip()

Пример со списком

Возьмем список фруктов.

Предположим, что мы хотим создать словарь, где ключами будут названия фруктов, а значениями — количество букв в каждом из слов.

словарь, в котором ключи - это слова, а значения - их длина

Вначале создадим список с количеством символов. Для этого нам понадобится функция map(). Эта функция принимает два аргумента: во-первых, что нужно сделать с каждым из элементов, во-вторых, перечень этих самых элементов.

функция map() в Питоне

В нашем случае первым аргументом будет lambda-функция lambda word : len ( word ) , которая просто посчитает длину передаваемого ей слова, а вторым аргументом будет наш список фруктов.

Как вы видите, мы использовали функцию list() для преобразования результата в список.

Остается создать словарь. Для этого с помощью знакомой нам функции zip() мы создадим пары (название фрукта, количество символов) и передадим их функции dict() для создания словаря.

Интересно, что эту же задачу можно решить с помощью list comprehension.

В данном случае функции zip() мы передаем список фруктов и очень простую list comprehension, которая рассчитывает длину слов.

Пример со словарем

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

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

Здесь мы снова воспользовались lambda-функцией, которую в качестве аргумента передали в функцию map(). Обратите внимание, вторым аргументом стали значения словаря, полученные через метод .values().

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

Как и в предыдущем примере, эту задачу можно решить с помощью dict comprehension.

Код соответствует основной схеме, приведенной выше, и в целом читается проще, чем конструкция с lambda-функцией и функцией map().

Вложенные словари

Рассмотрим более сложный словарь с информацией о нескольких сотрудниках.

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

Базовые операции

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

Небольшое отступление от темы. Сложные структуры данных бывает удобно вывести с помощью функции pprint() одноименного модуля.

Функция pprint() расшифровывается как pretty print («красивая печать») и в некоторых случаях справляется со своей задачей лучше обычной функции print().

Посмотрим как можно добавить вложенный словарь.

Изменить значение вложенного словаря можно также с помощью двойного ключа.

Циклы for

Посмотрим, как можно использовать цикл for со вложенными словарями. Давайте заменим тип данных с информацией о возрасте сотрудника с int на float.

Вложенные словари и dict comprehension

Вложенные словари также допускают использование dict comprehension. Предположим, что мы хотим вернуть данные о возрасте из типа float обратно в тип int. Разобьем эту задачу на несколько этапов.

Шаг 1. Просто выведем словарь employees без изменений, используя dict comprehension.

Шаг 2. Создадим еще один dict comprehension, с помощью которого внутри каждого вложенного словаря мы заменим тип данных значения с float на int, если ключ совпадает с age, если не сопадает — оставим значение без изменений (по сути, условие с if-else).

Шаг 3. Вставим второй dict comprehension в первый вместо переменной info. Напомнью, info — это значения внешнего словаря, которые сами по себе являются словарями. Именно к ним мы и применим второй dict comprehension.

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

Частота слов в тексте

Напоследок разберем очень несложный пример подсчета частоты слов в тексте. Это уже знакомый нам мешок слов (Bag of Words, BoW). В качестве примера возьмем уже известный нам текст про Париж, музеи и искусство.

Предварительная обработка текста

Превратим строку в список слов.

Применим list comprehension, чтобы избавиться от точек и запятых. Помимо этого, переведем все слова в нижний регистр.

Мы готовы создавать мешки слов разными способами.

Способ 1. Условие if-else

Начнем с простых условий if-else.

Способ 2. Метод .get()

Помимо этого мы можем использовать метод .get().

Поясню приведенный код. Метод .get() проверит наличие ключа (слова) в словаре и, если его нет, выведет 0.

Далее мы прибавим к нулю единицу (потому что слово встретилось первый раз) и запишем это слово в наш словарь.

Если такой ключ (слово) уже есть, метод .get() выведет его значение (частоту слова) и мы просто увеличим это значение на один.

Способ 3. Класс Counter модуля collections

Напомню, что этот же функционал реализован в классе Counter модуля collections.

Результат. Обратите внимание, в отличие от мешка слов, который мы создавали на занятии по обработке естественного языка, в число наиболее популярных слов вошли артикли, предлоги и союзы. Они не несут полезной информации о содержании текста. Это так называемые стоп-слова. Кроме того, мы не провели лемматизацию, и поэтому museum и museums считаются разными словами.

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

Подведем итог

Сегодня мы подробно рассмотрели, что собой представляет словарь в Питоне.

Мы изучили структуры словаря, основные операции со словарями, использование dict comprehension, а также рассмотрели ряд дополнительных примеров. В частности, мы узнали про возможность создания словаря с помощью lambda-функции, а также функции map() и zip(), вложенные словари и несколько способов подсчета частоты слов в заданном тексте.

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

Вопрос. Есть ли индекс у элементов словаря в Питоне?

Посмотреть правильный ответ

Ответ: нет, элементы словаря в Питоне не упорядочены, и у них отсутствует индекс. Доступ к элементам словаря осуществляется по ключу.

Вопрос. С помощью какого метода можно соединить два словаря в один?

Посмотреть правильный ответ

Ответ: для этого подойдет метод .update().

Вопрос. Почему при копировании объекта в Питоне лучше использовать метод .copy()?

Посмотреть правильный ответ

Ответ: если для копирования использовать оператор присваивания = , то при изменении нового объекта изменится и исходный. Это происходит потому, что новая переменная лишь ссылается на объект, содержащийся в исходной переменной.

В ноутбуке к лекции приведены дополнительные упражнения⧉.

В следующий раз мы поговорим про массив Numpy.

Ответы на вопросы

Вопрос. А что будет, если в словаре есть одинаковые ключи?

Ответ. Давайте посмотрим на примере. При создании словаря с одинаковыми ключами:

Циклы со словарями в Python

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

Один словарь в Python может содержать всего от нескольких пар «ключ-значение» до миллионов. Так как словарь может содержать большие объемы данных, Python позволяет перебирать словарь. Словари можно использовать для хранения информации разными способами; поэтому существует различные способы их обработки. Можно просматривать все пары «ключ-значение» словаря, его ключи или значения.

Выполнение цикла всех «ключей» словаря

Прежде чем исследовать различные подходы к созданию циклов, давайте сделаем новый словарь, предназначенный для хранения информации о пользователе на веб-сайте. Следующий словарь будет хранить название учётной записи, имя и фамилию одного пользователя:

Можно получить доступ к любой отдельной информации переменной user_0 на основе того, что вы уже узнали в прошлых статьях о словарях. Но что, если вы хотите увидеть все, что хранится в словаре этого пользователя? Для этого вы можете перебрать словарь, используя цикл for:

Как показано, чтобы написать цикл for для словаря, вы создаете имена для двух переменных, которые будут содержать ключ и значение в каждой паре «ключ-значение». Можно выбрать любые имена для этих двух переменных. Этот код работал бы так же хорошо, если бы вы использовали сокращения для имен переменных, например так:

Вторая половина цикла for содержит имя словаря, за которым следует метод items() , который возвращает список пар «ключ-значение». Затем цикл for сохраняет каждую из этих пар в двух предоставленных переменных. В предыдущем примере используются переменные для печати каждого ключа, а затем связанное значение. « \n » в первом операторе печати обеспечивает вставку пустой строки перед каждой парой ключ-значение в выводе данных:

Еще раз обратите внимание, что пары «ключ-значение» не возвращаются в том порядке, в котором они были сохранены, даже при циклическом просмотре словаря. Python не заботится о порядке, в котором хранятся пары ключ-значение; он отслеживает только связи между отдельными ключами и их значениями.

Циклическая переборка всех пар «ключ-значение» особенно эффективна для таких словарей, где хранится информация одного и того же типа для множества разных ключей, на примере кода с любимыми языками программирования. Если перебирать словарь, то получаете имя каждого человека в словаре и его любимый язык программирования. Поскольку ключи всегда ссылаются на имя человека, а значение всегда является языком, используются переменные имя и язык в цикле вместо ключа и значения. Это облегчит следить за тем, что происходит внутри цикла:

Код сообщает Python зацикливаться на каждой паре «ключ-значение» в словаре. Так как он работает через каждую пару, ключ сохраняется в имени переменной, а значение сохраняется в языке переменной. Эти описательные имена облегчают понимание того, что делает функция print() . Теперь, всего за несколько строк кода, мы можем отобразить всю информацию из опроса:

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

Выполнение цикла «ключей» в определённом порядке

Словарь всегда поддерживает четкую связь между каждым ключом и связанным с ним значением, но вы никогда не получите элементы из словаря в любом предсказуемом порядке. Это не проблема, потому что вы обычно просто хотите получить правильное значение, связанное с каждым ключом.

Один из способов вернуть элементы в определенном порядке — отсортировать ключи по мере их возврата в цикле for. Вы можете использовать функцию sorted() , чтобы получить копию ключей в следующем порядке:

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

Выполнение цикла всех значений словаря

Если вас в первую очередь интересуют значения, содержащиеся в словаре, вы можете использовать метод values() , чтобы получить список значений без каких-либо ключей. Например, скажем, мы просто хотим получить список всех языков, выбранных в нашем опросе по языку программирования, без имени человека, который выбрал тот или иной язык программирования:

Здесь оператор for извлекает каждое значение из словаря и сохраняет его в переменную «language». Затем мы получаем список всех выбранных языков:

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

Когда вы используете функцию set() для списка, который содержит повторяющиеся элементы, Python идентифицирует уникальные элементы в списке и создает набор из этих элементов. То есть мы используем set() , чтобы вытащить уникальные языки в переменной favourite_languages.values() . Результатом является не повторяющийся список языков, которые были упомянуты людьми, принимающими участие в опросе:

Продолжая изучать Python, вы часто обнаружите встроенные функции языка, которые помогут делать именно то, что задумано с вашими данными.

Примечание

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

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

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