В Python есть много встроенных структур данных, используемых для хранения разных типов информации. Словарь (dict
) — одна из таких структур, которая хранит данные в формате пар ключ-значение. Получить доступ к значениям словаря Python можно с помощью ключей. Этот материал посвящен подробному обсуждению словаря.
Создание словаря
Для создания словаря в Python необходимо передать последовательность элементов внутри фигурных скобок {}
, разделив их запятыми (,
). Каждый элемент имеет ключ и значение, выраженное парой «ключ: значение».
Значения могут быть представлять собой любые типы данных и повторяться, но ключи обязаны быть уникальными.
Следующие примеры показывают, как создавать словари Python:
Создание пустого словаря:
dict_sample = {}
Cловарь, где ключи являются целыми числами:
dict_sample = {1: 'mango', 2: 'pawpaw'}
Создание словаря с ключами разных типов:
dict_sample = {'fruit': 'mango', 1: [4, 6, 8]}
Можно также создать словарь, явно вызвав метод 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'}
}
Чтобы вывести содержимое словаря, можно использовать функцию 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
. Ее значение — это значение ключа ["model"]
из словаря.
Вот другой пример:
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
Объект словаря также имеет функцию 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'}
У нового элемента ключ "Capacity"
и значение — "180CC"
. Он был добавлен в качестве первого элемента словаря.
Вот другой пример. Для начала нужно создать пустой словарь:
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
является ключом, а "Apples"
— значение.
Можно даже добавить несколько значений для одного ключа. Например:
MyDictionary['Values'] = 1, "Pairs", 4
print("\n3 elements have been added: ")
print(MyDictionary)
Вывод:
3 elements have been added: {'Values': (1, 'Pairs', 4)}
В этом примере название ключа — "Value"
, а все что после знака =
— его значения в формате множества (Set
).
Помимо добавления новых элементов в словарь, их можно обновлять или изменять. Об этом в следующем разделе.
Обновление элементов
После добавления значения в словарь существующий элемент словаря можно изменить. Для изменения значения используется соответствующий ключ. Например:
dict_sample = {
"Company": "Toyota",
"model": "Premio",
"year": 2012
}
dict_sample["year"] = 2014
print(dict_sample)
Вывод:
{'year': 2014, 'model': 'Premio', 'Company': 'Toyota'}
В этом примере видно, что было обновлено значение ключа "year"
с 2012
на 2014
.
Удаление элементов
Удалить элемент из словаря можно несколькими способами. В этом разделе они будут рассмотрены по одному:
Ключевое слово del можно использовать для удаления элемента с конкретным ключом. Например:
dict_sample = {
"Company": "Toyota",
"model": "Premio",
"year": 2012
}
del dict_sample["year"]
print(dict_sample)
Вывод:
{'Company': 'Toyota', 'model': 'Premio'}
Вызывается ключевое слово del
, а следом за ним — название словаря. В квадратных скобках следом за словарем идет ключ элемента, который требуется удалить. В этом примере это "year"
. Запись "year"
удаляется из словаря.
Другой способ удалить пару ключ-значение — функция pop()
с ключом записи в виде аргумента. Например:
dict_sample = {
"Company": "Toyota",
"model": "Premio",
"year": 2012
}
dict_sample.pop("year")
print(dict_sample)
Вывод:
{'Company': 'Toyota', 'model': 'Premio'}
Функция pop()
была вызвана добавлением ее к названию словаря. В этом случае будет удалена запись с ключом "year"
.
Функция popitem()
удаляет последний элемент в словаре. Для нее не нужно указывать конкретный ключ. Примеры:
dict_sample = {
"Company": "Toyota",
"model": "Premio",
"year": 2012
}
dict_sample.popitem()
print(dict_sample)
Вывод:
{'Company': 'Toyota', 'model': 'Premio'}
Последней записью в словаре была "year"
. Она пропала из словаря после вызова функции popitem()
.
Что делать, если нужно удалить целый словарь? Это будет сложно и займет много времени, если пользоваться этими методами к каждому ключу. Вместо этого можно использовать ключевое слово del
для целого словаря. Например:
dict_sample = {
"Company": "Toyota",
"model": "Premio",
"year": 2012
}
del dict_sample
print(dict_sample)
Вывод:
NameError: name 'dict_sample' is not defined
Код вернет ошибку, потому что функция print()
пытается получить доступ к словарю, который уже не существует.
В определенных случаях может потребоваться удалить все элементы словаря, оставив его пустым. Этого можно добиться, воспользовавшись функцией 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)])
Вывод демонстрирует, что когда вы меняете значение в словаре, объекты элементов также обновляются.
Метод fromkeys()
Этот метод возвращает словарь с указанными ключами и значениями. У него следующий синтаксис:
dictionary.fromkeys(keys, value)
Значение требуемого параметра 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()
вставляет этот ключ вместе со значением "Gray"
.
Следующий пример показывает, как работает метод, если такой ключ уже есть:
dict_sample = {
"Company": "Toyota",
"model": "Premio",
"year": 2012
}
x = dict_sample.setdefault("model", "Allion")
print(x)
Вывод:
Premio
Значение "Allion"
не повлияло на словарь, потому что у ключа уже есть значение.
Метод 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
Пустой словарь в Python, как и в JavaScript, можно создать двумя способами:
через функцию dict()
или с помощью фигурных скобок.
Рассмотрим на примере:
#Создание через функцию: dict1 = dict() #Создание через фигурные скобки: dict2 = {} print(type(dict1)) #Выведет <class 'dict'> print(type(dict2)) #Выведет <class 'dict'> print(dict1) #Выведет {} print(dict2) #Выведет {}
Теперь создадим уже заполненный словарь через функцию и фигурные скобки:
#Создание через функцию: dict1 = dict(car='машина', apple='яблоко') #Создание через фигурные скобки: dict2 = { 'car': 'машина', 'apple': 'яблоко' } print(dict1) #Выведет {'car': 'машина', 'apple': 'яблоко'} print(dict2) #Выведет {'car': 'машина', 'apple': 'яблоко'}
Изменение словаря
Добавим в наш словарь объект. Для этого нам нужно придумать значение ключу. Рассмотрим на примере:
dict = { 'car': ‘машина’, 'apple': 'яблоко' } dict['orange'] = 'апельсин' #В квадратных скобках указываем имя ключа, а значение после знака равно print(dict) #Выведет {'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин'}
Для удаления ключа и его объекта в словаре используют метод del, указывая имя ключа в квадратных скобках:
dict = { 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' } del dict['orange'] print(dict) #Выведет {'car': 'машина', 'apple': 'яблоко'}
Перебор элементов словарей в Python
Для вывода всех ключей и значений по порядку используем цикл с оператором in:
dict = { 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' } for key in dict: print(key, dict[key]) #Выведет: #car машина #apple яблоко #orange апельсин
Для вывода значения по ключу используем имя словаря и квадратные скобки с именем нужного ключа:
dict = { 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' } print(dict['car']) #Выведет 'машина'
Методы словарей в Python
copy() – создание копии словаря. Рассмотрим на примере:
dict1 = { 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' } dict2 = dict1.copy() print(dict2) #Выведет {'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин'}
get() – получение значения по ключу. Рассмотрим на примере:
dict = { 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' } print(dict.get('car')) #Выведет 'машина'
clear() – очистка словаря. Рассмотрим на примере:
dict = { 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' } dict.clear() print(dict) #Выведет {}
keys() – получение всех ключей словаря. Рассмотрим на примере:
dict = { 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' } print(dict.keys()) #Выведет dict_keys(['car', 'apple', 'orange'])
values() – получение всех значений элементов словаря. Пример:
dict = { 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' } print(dict.values()) #Выведет dict_values(['машина', 'яблоко', 'апельсин'])
items() – получение всех элементов словаря, включая ключи. Рассмотрим на примере:
dict = { 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' } print(dict.items()) #Выведет dict_items([('car', 'машина'), ('apple', 'яблоко'), ('orange', 'апельсин')])
pop() – удаляет и возвращает значение ключа. Рассмотрим на примере:
dict = { 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' } print(dict.pop('car')) #Выведет ‘машина’ print(dict) #Выведет {'apple': 'яблоко', 'orange': 'апельсин'}
popitem() – удаляет и возвращает имя и значение ключа. Пример:
dict = { 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' } print(dict.pop()) #Выведет ('orange', 'апельсин') print(dict) #Выведет {'car': 'машина', 'apple': 'яблоко'}
setdefault() – получение значения по ключу, если такой ключ присутствует в словаре. Когда такого ключа нет, он создается со значением None (если оно не указано в свойствах). Рассмотрим на примере:
dict = { 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' } print(dict.setdefault(‘car’) #Выведет 'машина' print(dict.setdefault('home', 'дом') #Выведет 'дом' print(dict) #Выведет {'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин', 'home': 'дом'}
update({}) – обновить значения по ключам, добавление новых ключей:
dict = { 'car': 'машина', 'apple': 'яблоко', 'orange': 'апельсин' } dict.update({'car': 'автомобиль', 'home': 'дом'}) print(dict) #Выведет {'car': 'автомобиль', 'apple': 'яблоко', 'orange': 'апельсин', 'home': 'дом'}