Рубрики
Без рубрики

Словари Python 101: подробное визуальное введение

Автор оригинала: Estefania Cassingena Navone.

Добро пожаловать

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

В частности, вы узнаете:

  • Какие словари используются для и их основные характеристики.
  • Почему они важны для ваших проектов программирования.
  • «Анатомия» словаря: клавиши, значения и пары клавишных пар.
  • Конкретные правила, которые определяют, может ли значение ключом может быть ключом.
  • Как получить доступ, добавить, модифицировать и удалить пары значения ключа.
  • Как проверить, находится ли ключ в словаре.
  • Какая длина словаря представляет.
  • Как повторять словари, используя для петлей.
  • Какие встроенные методы словаря вы можете использовать для использования мощности этого типа данных.

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

Давайте начнем! ⭐️.

🔹 словари в контексте

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

Когда вы работаете со списками в Python, вы можете получить доступ к элементу, используя индекс, Целое число Это описывает положение элемента в списке. Индексы начинаются с нуля для первого элемента и увеличиваются на один для каждого последующего элемента в списке. Вы можете увидеть пример прямо здесь:

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

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

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

Познакомьтесь с словарями

Словарь Python выглядит так (см. Ниже). С словарем, вы можете «подключить» значение для другого значения, чтобы представлять отношения между ними в вашем коде. В этом примере «Джино» «подключен» к целому числу 15, а струна «Nora» – «подключена» к целому числу 30.

Давайте посмотрим на разные элементы, которые делают словарь.

🔸 «анатомия» словаря Python

Поскольку словарь «подключает» два значения, он имеет два типа элементов:

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

Эти два элемента образуются, что называется Пара ключа-значения (ключ с соответствующим значением).

Синтаксис

Это пример сопоставления словаря Python Строка «Gino» на номер 15 и строку «Нора» на номер 30:

>>> {"Gino": 15, "Nora": 30}
  • Чтобы создать словарь, мы используем Кудрявые скобки {} Отказ
  • Между этими вьющимися кронштейнами мы пишем пары клавишных значений, разделенные запятой.
  • Для пар клавишных значений мы пишем ключ, а затем толстой кишкой, пространством и значением, которое соответствует ключу.

💡 Советы:

  • Для читаемости и стиля рекомендуется добавить пространство после каждой запятой, чтобы отделить пары ключа-значений.
  • Вы можете создать пустой словарь с пустой парой фигурных скобок {} Отказ

Важные правила для ключей

Не каждое значение может быть ключом в словаре Python. Ключи должны следовать набором правил:

Согласно Документация Python :

  • Ключи должны быть уникальными в одном словаре.
  • Ключи должны быть неизменными.
  • Если ключ – кортеж, он может содержать только строки, цифры или кортежи.
  • Списки не могут быть ключевыми ключами, потому что они смены. Это следствие предыдущего правила.

💡 Примечание: Значения не имеют конкретных правил, они могут быть либо подменными, либо неизменными значениями.

🔹 словари в действии

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

Мы начнем работать с этим словарем, присвоенным возраст Переменная:

>>> ages = {"Gino": 15, "Nora": 30}

Значения доступа с помощью клавиш

Если нам нужно получить доступ к значению, связанному с определенным ключом, мы пишем имя переменной, которая ссылается на словарь, за которым следует квадратные скобки [] И, в квадратных скобках, ключ, который соответствует значению:

[]

Это пример того, как мы можем получить доступ к значению, соответствующему строке "Джино" :

>>> ages = {"Gino": 15, "Nora": 30}
>>> ages["Gino"]
15

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

Если мы хотим получить доступ к значению, который соответствует «NORA», мы сделаем это:

>>> ages = {"Gino": 15, "Nora": 30}
>>> ages["Nora"]
30

💡 Совет: Если вы попытаетесь получить доступ к ключу, который не существует в словаре, вы получите KeyError :

>>> ages = {"Gino": 15, "Nora": 30}
>>> ages["Talina"]
Traceback (most recent call last):
  File "", line 1, in 
    ages["Talina"]
KeyError: 'Talina'

Добавить пары клавиш

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

Это пример в холостом ходу:

>>> ages = {"Gino": 15, "Nora": 30}

# Add the key-value pair "Talina": 24
>>> ages["Talina"] = 24

# The dictionary now has this key-value pair
>>> ages
{'Gino': 15, 'Nora': 30, 'Talina': 24}

Изменить пару ключ

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

>>> ages = {"Gino": 15, "Nora": 30}

# The key "Gino" already exists in the dictionary, so its associated value
# will be updated to 45.
>>> ages["Gino"] = 45

# The value was updated to 45.
>>> ages
{'Gino': 45, 'Nora': 30}

Удаление пары ключа

Чтобы удалить пару ключ-значение, вы бы использовали дель Ключевое слово, за которым следует имя переменной, которая ссылается на словарь и, в рамках квадратных скобок [] , ключ пары ключа-значения:

Это пример в холостом ходу:

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}

# Delete the key-value pair "Gino": 15.
>>> del ages["Gino"]

# The key-value pair was deleted.
>>> ages
{'Nora': 30, 'Talina': 45}

🔸 Проверьте, находится ли ключ в словаре

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

Согласно Документация Python :

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}
>>> "Talina" in ages
True
>>> "Gino" in ages
True
>>> "Lulu" in ages
False

в Оператор проверяет ключи, а не значения. Если мы напишем это:

>>> 15 in ages
False

Мы проверяем, если ключ 15 находится в словаре, а не значение. Вот почему выражение оценивает Ложь Отказ

💡 Совет: Вы можете использовать в Оператор для проверки, если значение находится в словаре с .values () Отказ

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}
>>> 30 in ages.values()
True
>>> 10 in ages.values()
False

🔹 Длина словаря Python

Длина словаря – это количество пар клавиш, которые он содержит. Вы можете проверить длину словаря с Лен () Функция, которую мы обычно используем, как мы проверяем длину списков, кортежей и строки:

# Two key-value pairs. Length 2.
>>> ages = {"Gino": 15, "Nora": 30}
>>> len(ages)
2

# Three key-value pairs. Length 3.
>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}
>>> len(ages)
3

🔸 Итализация по словарям в Python

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

Первый вариант – итерация по ключам

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

for  in :
	# Do this

Например:

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}
>>> for student in ages:
	print(student)
    
Gino
Nora
Talina

Второй вариант – итерация на пары ключа-значений

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

for  in .items():
	# Do this

Например:

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}

>>> for pair in ages.items():
	print(pair)
	
('Gino', 15)
('Nora', 30)
('Talina', 45)

Третий вариант – Назначьте ключи и значения для отдельных переменных

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

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}

# Tuple assignment to assign the key to the variable key 
# and the value to the variable value.
>>> for key, value in ages.items():
	print("Key:", key, "; Value:", value)

	
Key: Gino ; Value: 15
Key: Nora ; Value: 30
Key: Talina ; Value: 45

Четвертый вариант – итерация по ценностям

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

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}
>>> for age in ages.values():
	print(age)

15
30
45

🔹 Словарь методы

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

.Чисто()

Этот метод удаляет все пары ключа-значений из словаря.

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}
>>> ages.clear()
>>> ages
{}

.get (, <по умолчанию>)

Этот метод возвращает значение, связанное с ключом. В противном случае он возвращает значение по умолчанию, которое было предоставлено в качестве второго аргумента (этот второй аргумент является необязательным).

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}
>>> ages.get("Nora")
30
>>> ages.get("Nor", "Not Found")
'Not Found'

Если вы не добавите второй аргумент, это эквивалентно предыдущему синтаксису с квадратными кронштейнами [] Что вы узнали:

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}
>>> ages["Nora"]
30
>>> ages.get("Nora")
30

.pop (, <по умолчанию>)

Этот метод удаляет пару со значениями ключа из словаря и возвращает значение.

>>> ages = {"Gino": 15, "Nora": 30, "Talina": 45}
>>> ages.pop("Talina")
45
>>> ages
{'Gino': 15, 'Nora': 30}

.update (<Другое>)

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

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

>>> grades = {"Gino": 0, "Nora": 98, "Talina": 99}
>>> new_grades = {"Gino": 67}
>>> grades.update(new_grades)
>>> grades
{'Gino': 67, 'Nora': 98, 'Talina': 99}

Используя метод .Update (), мы могли бы обновить значение, связанное со строкой «Gino» в оригинальном словаре, так как это единственный общий ключ в обоих словарях.

Исходное значение будет заменено значением, связанным с этим ключом в словаре, которое было передано в качестве аргумента для .update ().

💡 Советы: Чтобы узнать больше о методах словаря, я рекомендую читать Эта статья в документации Python Отказ

🔸 Мини-проект – словарь частот

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

Код

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

  • Шаг 1: Первое, что нам нужно сделать, это написать заголовок функции. Обратите внимание, что эта функция принимает только один аргумент, список, строка или кортеж, который мы называем данные Отказ
def freq_dict(data):
  • Шаг 2: Затем нам нужно создать пустой словарь, который будет сопоставлять каждый элемент списка, строки или кортеля до соответствующей частоты.
def freq_dict(data):
	freq = {}
  • Шаг 3: Затем нам нужно повторить список, строку или кортеж, чтобы определить, что делать с каждым элементом.
def freq_dict(data):
	freq = {}
	for elem in data: 
  • Шаг 4: Если элемент уже был включен в словарь, то элемент отображается более одного раза, и нам нужно добавить 1 на свою текущую частоту. Иначе, если элемент уже не в словаре уже, это первый раз, когда он появляется, и его начальное значение должно быть 1.
def freq_dict(data):
	freq = {}
	for elem in data:
		if elem in freq:
			freq[elem] += 1
		else:
			freq[elem] = 1
  • Шаг 5: Наконец, нам нужно вернуть словарь.
def freq_dict(data):
	freq = {}
	for elem in data:
		if elem in freq:
			freq[elem] += 1
		else:
			freq[elem] = 1
	return freq

❗️ Важно: .. Поскольку мы присваиваем элементы в качестве ключей словаря, они должны иметь неизменяемый тип данных.

Примеры

Здесь у нас есть пример использования этой функции. Обратите внимание, как словарь отображает каждый символ строки, сколько раз это происходит.

>>> def freq_dict(data):
	freq = {}
	for elem in data:
		if elem in freq:
			freq[elem] += 1
		else:
			freq[elem] = 1
	return freq

>>> freq_dict("Hello, how are you?")
{'H': 1, 'e': 2, 'l': 2, 'o': 3, ',': 1, ' ': 3, 'h': 1, 'w': 1, 'a': 1, 'r': 1, 'y': 1, 'u': 1, '?': 1}

Это еще один пример, примененный к списку целых чисел:

>>> def freq_dict(data):
	freq = {}
	for elem in data:
		if elem in freq:
			freq[elem] += 1
		else:
			freq[elem] = 1
	return freq

>>> freq_dict([5, 2, 6, 2, 6, 5, 2, 2, 2])
{5: 2, 2: 5, 6: 2}

Отличная работа! Теперь у нас есть окончательная функция.

🔹 в резюме

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

Я действительно надеюсь, тебе понравилась моя статья и обнаружила, что это полезно. Теперь вы можете работать с словарями в ваших проектах Python. Проверьте мои онлайн-курсы Отказ Следуй за мной на Twitter Отказ ⭐️.