Словарь (Dictionary) в Python используется для хранения данных в формате пары ключ-значение. Словарь - это тип данных в Python, который может имитировать реальное расположение данных, когда для определенного ключа существует конкретное значение. Это изменяемая структура данных. Словарь состоит из ключей и значений.
- Ключи должны быть одним элементом.
- Значение может быть любого типа, например, список, кортеж, целое число и т.д.
Другими словами, можно сказать, что словарь - это коллекция пар ключ-значение, где значением может быть любой объект Python. Ключи, напротив, являются неизменяемыми объектами Python, т.е. числами, строками или кортежами.
Создание словаря
Словарь можно создать с помощью нескольких пар ключ-значение, заключенных в фигурные скобки {}
, при этом каждый ключ отделяется от своего значения двоеточием (:
). Синтаксис для определения словаря приведен ниже.
Dict = {"Name": "Tom", "Age": 22}
В приведенном выше словаре Dict
, ключи Name
и Age
являются строкой, которая представляет собой неизменяемый объект.
Рассмотрим пример создания словаря и печати его содержимого.
Employee = {"Name": "John", "Age": 29, "salary":25000,"Company":"GOOGLE"}
print(type(Employee))
print("printing Employee data .... ")
print(Employee)
Вывод:
<class 'dict'>
Printing Employee data ....
{'Name': 'John', 'Age': 29, 'salary': 25000, 'Company': 'GOOGLE'}
Python предоставляет встроенную функцию dict()
, которая также используется для создания словаря. Пустые фигурные скобки {}
используются для создания пустого словаря.
# Creating an empty Dictionary
Dict = {}
print("Empty Dictionary: ")
print(Dict)
# Creating a Dictionary
# with dict() method
Dict = dict({1: 'Java', 2: 'T', 3:'Point'})
print("\nCreate Dictionary by using dict(): ")
print(Dict)
# Creating a Dictionary
# with each item as a Pair
Dict = dict([(1, 'Devansh'), (2, 'Sharma')])
print("\nDictionary with each item as a pair: ")
print(Dict)
Вывод:
Empty Dictionary:
{}
Create Dictionary by using dict():
{1: 'Java', 2: 'T', 3: 'Point'}
Dictionary with each item as a pair:
{1: 'Devansh', 2: 'Sharma'}
Доступ к значениям словаря
Мы уже обсуждали, как можно получить доступ к данным в списке и кортеже с помощью индексации.
Однако к значениям в словаре можно получить доступ с помощью ключей, поскольку ключи в словаре уникальны.
Доступ к значениям словаря можно получить следующим образом.
Employee = {"Name": "John", "Age": 29, "salary":25000,"Company":"GOOGLE"}
print(type(Employee))
print("printing Employee data .... ")
print("Name : %s" %Employee["Name"])
print("Age : %d" %Employee["Age"])
print("Salary : %d" %Employee["salary"])
print("Company : %s" %Employee["Company"])
Вывод:
<class 'dict'>
printing Employee data ....
Name : John
Age : 29
Salary : 25000
Company : GOOGLE
Python предоставляет нам альтернативу - использовать метод get()
для доступа к значениям словаря. Это даст тот же результат, что и индексирование.
Добавление значений словаря
Словарь (Dictionary) - это изменяемый тип данных, и его значения могут быть обновлены с помощью определенных ключей. Значение может быть обновлено вместе с ключом Dict[key] = value
. Метод update()
также используется для обновления существующего значения.
Примечание: Если ключ-значение уже присутствует в словаре, то значение обновляется. В противном случае в словарь добавляются новые ключи.
Рассмотрим пример обновления значений словаря.
Пример 1:
# Creating an empty Dictionary
Dict = {}
print("Empty Dictionary: ")
print(Dict)
# Adding elements to dictionary one at a time
Dict[0] = 'Peter'
Dict[2] = 'Joseph'
Dict[3] = 'Ricky'
print("\nDictionary after adding 3 elements: ")
print(Dict)
# Adding set of values
# with a single Key
# The Emp_ages doesn't exist to dictionary
Dict['Emp_ages'] = 20, 33, 24
print("\nDictionary after adding 3 elements: ")
print(Dict)
# Updating existing Key's Value
Dict[3] = 'JavaTpoint'
print("\nUpdated key value: ")
print(Dict)
Вывод:
Empty Dictionary:
{}
Dictionary after adding 3 elements:
{0: 'Peter', 2: 'Joseph', 3: 'Ricky'}
Dictionary after adding 3 elements:
{0: 'Peter', 2: 'Joseph', 3: 'Ricky', 'Emp_ages': (20, 33, 24)}
Updated key value:
{0: 'Peter', 2: 'Joseph', 3: 'JavaTpoint', 'Emp_ages': (20, 33, 24)}
Пример 2:
Employee = {"Name": "John", "Age": 29, "salary":25000,"Company":"GOOGLE"}
print(type(Employee))
print("printing Employee data .... ")
print(Employee)
print("Enter the details of the new employee....");
Employee["Name"] = input("Name: ");
Employee["Age"] = int(input("Age: "));
Employee["salary"] = int(input("Salary: "));
Employee["Company"] = input("Company:");
print("printing the new data");
print(Employee)
Вывод:
<class 'dict'>
printing Employee data ....
{'Name': 'John', 'Age': 29, 'salary': 25000, 'Company': 'GOOGLE'}
Enter the details of the new employee....
Name: Peter
Age: 20
Salary: 1000
Company:GOOGLE
printing the new data
{'Name': 'Peter', 'Age': 20, 'salary': 1000, 'Company': 'GOOGLE'}
Удаление элементов словаря в Python с помощью ключевого слова del
Элементы словаря могут быть удалены с помощью ключевого слова del
, как показано ниже.
Python предоставляет нам альтернативу - использовать метод get()
для доступа к значениям словаря. Это даст тот же результат, что и индексирование.
Employee = {"Name": "John", "Age": 29, "salary":25000,"Company":"GOOGLE"}
print(type(Employee))
print("printing Employee data .... ")
print(Employee)
print("Deleting some of the employee data")
del Employee["Name"]
del Employee["Company"]
print("printing the modified information ")
print(Employee)
print("Deleting the dictionary: Employee");
del Employee
print("Lets try to print it again ");
print(Employee)
Вывод:
<class 'dict'>
printing Employee data ....
{'Name': 'John', 'Age': 29, 'salary': 25000, 'Company': 'GOOGLE'}
Deleting some of the employee data
printing the modified information
{'Age': 29, 'salary': 25000}
Deleting the dictionary: Employee
Lets try to print it again
NameError: name 'Employee' is not defined
Последний оператор print
в приведенном выше коде выдает ошибку, потому что мы пытались вывести словарь сотрудников, который уже удален.
Использование метода pop()
Метод pop()
принимает ключ в качестве аргумента и удаляет связанное с ним значение. Рассмотрим следующий пример.
# Creating a Dictionary
Dict = {1: 'JavaTpoint', 2: 'Peter', 3: 'Thomas'}
# Deleting a key
# using pop() method
pop_ele = Dict.pop(3)
print(Dict)
Вывод:
{1: 'JavaTpoint', 2: 'Peter'}
Python также предоставляет встроенные методы popitem()
и clear()
для удаления элементов из словаря. Метод popitem()
удаляет произвольный элемент из словаря, тогда как метод clear()
удаляет все элементы во всем словаре.
Обход (итерирование) словаря в Python
Словарь можно итерировать с помощью цикла for
, как показано ниже.
Пример 1: цикл for для печати всех ключей словаря
Employee = {"Name": "John", "Age": 29, "salary":25000,"Company":"GOOGLE"}
for x in Employee:
print(x)
Вывод:
Name
Age
salary
Company
Пример 2: цикл for для вывода всех значений словаря
Employee = {"Name": "John", "Age": 29, "salary":25000,"Company":"GOOGLE"}
for x in Employee:
print(Employee[x])
Вывод:
John
29
25000
GOOGLE
Пример 3: цикл for для печати значений словаря с помощью метода values().
Employee = {"Name": "John", "Age": 29, "salary":25000,"Company":"GOOGLE"}
for x in Employee.values():
print(x)
Вывод:
John
29
25000
GOOGLE
Пример 4: цикл for для печати элементов словаря с помощью метода items().
Employee = {"Name": "John", "Age": 29, "salary":25000,"Company":"GOOGLE"}
for x in Employee.items():
print(x)
Вывод:
('Name', 'John')
('Age', 29)
('salary', 25000)
('Company', 'GOOGLE')
Особенности ключей у словаря (dictionary) в Python
В словаре мы не можем хранить несколько значений для одних и тех же ключей. Если мы передаем более одного значения для одного ключа, то значением ключа считается то, которое было присвоено последним.
Рассмотрим следующий пример.
Employee={"Name":"John","Age":29,"Salary":25000,"Company":"GOOGLE","Name":"John"}
for x,y in Employee.items():
print(x,y)
Вывод:
Name John
Age 29
Salary 25000
Company GOOGLE
В python ключом не может быть любой изменяемый объект. Мы можем использовать в качестве ключа числа, строки или кортежи, но мы не можем использовать в качестве ключа в словаре любой мутабельный объект, например список.
Рассмотрим следующий пример.
Employee = {"Name": "John", "Age": 29, "salary":25000,"Company":"GOOGLE",[100,201,301]:"Department ID"}
for x,y in Employee.items():
print(x,y)
Вывод:
Traceback (most recent call last):
File "dictionary.py", line 1, in
Employee = {"Name": "John", "Age": 29, "salary":25000,"Company":"GOOGLE",[100,201,301]:"Department ID"}
TypeError: unhashable type: 'list'
Встроенные функции словаря (dictionary) в Python
Встроенные методы словаря python вместе с описанием приведены ниже.
Функция | Описание |
---|---|
cmp(dict1, dict2) |
Сравнивает элементы обоих словарей и возвращает true , если значения первого словаря больше значений второго, в противном случае возвращается false . |
len(dict) |
Используется для вычисления длины словаря. |
str(dict) |
Преобразует словарь в печатаемое строковое представление. |
type(variable) |
Используется для вывода типа переданной переменной. |
Встроенные методы словаря
Встроенные методы словаря python вместе с описанием приведены ниже.
Метод | Описание |
---|---|
dic.clear() |
Используется для удаления всех элементов словаря. |
dict.copy() |
Возвращает неглубокую копию словаря. |
dict.fromkeys(iterable, value = None, /) |
Создает новый словарь из iterable со значениями, равными value . |
dict.get(key, default = "None") |
Используется для получения значения, указанного для переданного ключа. |
dict.has_key(key) |
Возвращает true , если словарь содержит указанный ключ. |
dict.items() |
Возвращает все пары ключ-значение в виде кортежа. |
dict.keys() |
Возвращает все ключи словаря. |
dict.setdefault(key,default= "None") |
Используется для установки ключа в значение по умолчанию, если ключ не указан в словаре |
dict.update(dict2) |
Обновляет словарь, добавляя пару ключ-значение dict2 в этот словарь. |
dict.values() |
Возвращает все значения словаря. |