Словарь (Dictionary)

Словарь (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() Возвращает все значения словаря.

множества (set)