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

Учебник по словарю Python

Автор оригинала: Nicholas Samuel.

  • Вступление
  • Создание словаря
  • Доступ к Элементам
  • Добавление элементов
  • Обновление Элементов
  • Удаление Элементов
  • Другие Распространенные Методы
  • Вывод

Вступление

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

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

Чтобы создать словарь Python, нам нужно передать последовательность элементов внутри фигурных скобок {} и разделить их с помощью запятой (,). Каждый элемент имеет ключ и значение, выраженное в виде пары “ключ:значение”.

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

В следующих примерах показано, как создавать словари Python:

Создание пустого словаря:

dict_sample = {}

Создание словаря с целочисленными ключами:

dict_sample = {1: 'mango', 2: 'pawpaw'}

Создание словаря со смешанными ключами:

dict_sample = {'fruit': 'mango', 1: [4, 6, 8]}

Мы также можем создать словарь, явно вызвав метод Python dict() :

dict_sample = dict({1:'mango', 2:'pawpaw'})

Словарь также может быть создан из последовательности, как показано ниже:

dict_sample = dict([(1,'mango'), (2,'pawpaw')])

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

dict_sample = {1: {'student1' : 'Nicholas', 'student2' : 'John', 'student3' : 'Mercy'},
        2: {'course1' : 'Computer Science', 'course2' : 'Mathematics', 'course3' : 'Accounting'}}

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

dict_sample = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}
print(dict_sample)

Выход:

{'Company': 'Toyota', 'model': 'Premio', 'year': 2012}

Доступ к Элементам

Чтобы получить доступ к элементам словаря, введите ключ в квадратные скобки [] . Например:

dict_sample = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}
x = dict_sample["model"]
print(x)

Выход:

Premio

Мы создали словарь с именем dict_sample . Затем была создана переменная с именем x , и ее значение устанавливается равным значению ключа “модель” в словаре.

Вот еще один пример:

dict = {'Name': 'Mercy', 'Age': 23, 'Course': 'Accounting'}
print("Student Name:", dict['Name'])
print("Course:", dict['Course'])
print("Age:", dict['Age'])

Выход:

Student Name: Mercy
Course: Accounting
Age: 23

Объект dictionary также предоставляет функцию get () , которая также может использоваться для доступа к элементам словаря. Мы добавляем функцию с именем словаря, используя оператор точки, а затем передаем имя ключа в качестве аргумента функции. Например:

dict_sample = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}
x = dict_sample.get("model")
print(x)

Выход:

Premio

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

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

Существует множество способов добавления новых элементов в словарь. Мы можем использовать новый ключ индекса и присвоить ему значение. Например:

dict_sample = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}
dict_sample["Capacity"] = "1800CC"
print(dict_sample)

Выход:

{'Capacity': '1800CC', 'year': 2012, 'Company': 'Toyota', 'model': 'Premio'}

Новый элемент имеет “Емкость” в качестве ключа и “1800CC” в качестве соответствующего значения. Он был добавлен в качестве первого элемента словаря.

Вот еще один пример. Сначала давайте создадим пустой словарь:

MyDictionary = {}
print("An Empty Dictionary: ")
print(MyDictionary)

Выход:

An Empty Dictionary:

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

MyDictionary[0] = 'Apples'
MyDictionary[2] = 'Mangoes'
MyDictionary[3] = 20
print("\n3 elements have been added: ")
print(MyDictionary)

Выход:

3 elements have been added:
{0: 'Apples', 2: 'Mangoes', 3: 20}

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

MyDictionary[0] = 'Apples'

В приведенном выше примере 0-это ключ, а “Яблоки” – это значение.

Мы даже можем добавить набор значений к одному ключу. Например:

MyDictionary['Values'] = 1, "Pairs", 4
print("\n3 elements have been added: ")
print(MyDictionary)

Выход:

3 elements have been added:
{'Values': (1, 'Pairs', 4)}

В приведенном выше примере имя ключа – “Значения”, в то время как все после знака = являются фактическими значениями для этого ключа, хранящимися в виде Set .

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

Обновление Элементов

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

dict_sample = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}

dict_sample["year"] = 2014

print(dict_sample)

Выход:

{'year': 2014, 'model': 'Premio', 'Company': 'Toyota'}

В этом примере вы можете видеть, что мы обновили значение ключа “год” со старого значения 2012 года на новое значение 2014 года.

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

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

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

dict_sample = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}
del dict_sample["year"]
print(dict_sample)

Выход:

{'Company': 'Toyota', 'model': 'Premio'}

Мы назвали ключевое слово del , за которым следует название словаря. Внутри квадратных скобок, которые следуют за именем словаря, мы передали ключ элемента, который нам нужно удалить из словаря, который в данном примере был “год”. Запись “год” в словаре была затем удалена.

Другой способ удалить пару ключ-значение-использовать функцию pop() и передать ключ удаляемой записи в качестве аргумента функции. Например:

dict_sample = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}
dict_sample.pop("year")
print(dict_sample)

Выход:

{'Company': 'Toyota', 'model': 'Premio'}

Мы вызвали функцию pop () , добавив к ней имя словаря. Опять же, в этом примере запись “год” в словаре будет удалена.

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

dict_sample = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}
dict_sample.popitem()
print(dict_sample)

Выход:

{'Company': 'Toyota', 'model': 'Premio'}

Последняя запись в словаре была “год”. Он был удален после вызова функции pop item () .

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

dict_sample = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}
del dict_sample
print(dict_sample)

Выход:

NameError: name 'dict_sample' is not defined

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

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

dict_sample = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}
dict_sample.clear()
print(dict_sample)

Выход:

{}

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

Другие Распространенные Методы

Метод len()

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

dict_sample = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}
print(len(dict_sample))

Выход:

3

В словаре есть три записи, поэтому метод вернул 3.

Метод copy()

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

dict_sample = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}
x = dict_sample.copy()

print(x)

Выход:

{'Company': 'Toyota', 'year': 2012, 'model': 'Premio'}

Мы создали копию словаря с именем dict_sample и присвоили его переменной x . Если x напечатан на консоли, вы увидите, что он содержит те же элементы, что и те, которые хранятся в словаре dict_sample .

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

Метод items()

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

Метод просто вызывается по имени объекта словаря, как показано ниже:

dict_sample = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}

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

Выход:

('Company', 'Toyota')
('model', 'Premio')
('year', 2012)

Объект, возвращаемый функцией items () , также может быть использован для отображения изменений, которые были реализованы в словаре. Это показано ниже:

dict_sample = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}

x = dict_sample.items()

print(x)

dict_sample["model"] = "Mark X"

print(x)

Выход:

dict_items([('Company', 'Toyota'), ('model', 'Premio'), ('year', 2012)])
dict_items([('Company', 'Toyota'), ('model', 'Mark X'), ('year', 2012)])

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

Метод fromkeys()

Этот метод возвращает словарь с заданными ключами и значениями. Он принимает синтаксис, приведенный ниже:

dictionary.fromkeys(keys, value)

Значение параметра required keys является итеративным и определяет ключи для нового словаря. Значение параметра value является необязательным и указывает значение по умолчанию для всех ключей. Значение по умолчанию для этого параметра равно None .

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

name = ('John', 'Nicholas', 'Mercy')
age = 25

dict_sample = dict.fromkeys(name, age)


print(dict_sample)

Выход:

{'John': 25, 'Mercy': 25, 'Nicholas': 25}

В приведенном выше скрипте мы указали ключи и одно значение. Метод fromkeys() смог выбрать ключи и объединить их с этим значением, чтобы создать заполненный словарь.

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

name = ('John', 'Nicholas', 'Mercy')

dict_sample = dict.fromkeys(name)


print(dict_sample)

Выход:

{'John': None, 'Mercy': None, 'Nicholas': None}

Было использовано значение по умолчанию, которое равно None .

Метод setdefault()

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

Метод принимает следующий синтаксис:

dictionary.setdefault(keyname, value)

В этой функции требуется параметр keyname . Он представляет собой ключевое имя элемента, из которого необходимо вернуть значение. Параметр value является необязательным. Если в словаре уже есть ключ, то этот параметр не будет иметь никакого эффекта. Если ключ не существует, то значение, заданное в этой функции, станет значением ключа. Он имеет значение по умолчанию None .

Например:

dict_sample = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}

x = dict_sample.setdefault("color", "Gray")

print(x)

Выход

Gray

В словаре нет ключа для color . Метод setdefault() вставил этот ключ, и в качестве его значения было использовано указанное значение a, то есть “Серый”.

В следующем примере показано, как ведет себя метод, если значение ключа не существует:

dict_sample = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}

x = dict_sample.setdefault("model", "Allion")

print(x)

Выход:

Premio

Значение “Эллисон” не влияет на словарь, так как у нас уже есть значение для ключа.

Метод keys()

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

Чтобы использовать этот метод, мы вызываем его только по имени словаря, как показано ниже:

dictionary.keys()

Например:

dict_sample = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}

x = dict_sample.keys()

print(x)

Выход:

dict_keys(['model', 'Company', 'year'])

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

dict_sample = {
  "Company": "Toyota",
  "model": "Premio",
  "year": 2012
}

for k in dict_sample.keys():
  print(k)

Выход:

Company
model
year

Вывод

Это знаменует собой конец этого учебника по словарям Python. Эти словари хранят данные в парах “ключ:значение”. “Ключ” действует как идентификатор элемента, в то время как “значение” – это значение элемента. Словарь Python поставляется с различными функциями, которые могут быть применены для поиска или манипулирования данными. В этой статье мы увидели, как словарь Python может быть создан, изменен и удален вместе с некоторыми из наиболее часто используемых методов словаря.