Разработка программных модулей
Добрый день, уважаемые гости, рады приветствовать вас в Московском международном колледже цифровых технологий TOP
Словари в 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'} }
Словари в Python. Вывод
Чтобы вывести содержимое словаря, можно использовать функцию print() и передать название словаря в качестве аргумента. Например:
dict_sample = {
"Company": "Toyota",
"model": "Premio",
"year": 2012 }
print(dict_sample)
Вывод:
{'Company': 'Toyota', 'model': 'Premio', 'year': 2012}
Словари в Python. Доступ к элементами
Чтобы получить доступ к элементам словаря, нужно передать ключ в квадратных скобках []. Например:
dict_sample = { "Company": "Toyota", "model": "Premio", "year": 2012 }
x = dict_sample["model"]
print(x)
Вывод:
Premio
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
Словари в Python. Доступ к элементами
dict_sample = {
"Company": "Toyota",
"model": "Premio",
"year": 2012 }
x = dict_sample.get("model")
print(x)
Premio
Словари в Python. Добавление элементов
Существует множество способов для добавления новых элементов в словарь. Можно использовать новый ключ и присвоить ему значение. Например:
dict_sample = {
"Company": "Toyota",
"model": "Premio",
"year": 2012 }
dict_sample["Capacity"] = "1800CC"
print(dict_sample)
Вывод:
{'Capacity': '1800CC', 'year': 2012, 'Company': 'Toyota', 'model': 'Premio'}
Словари в Python. Добавление элементов
Вот другой пример. Для начала нужно создать пустой словарь:
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}
Словари в Python. Добавление элементов
Можно даже добавить несколько значений для одного ключа. Например:
MyDictionary['Values'] = 1, "Pairs", 4
print("\n3 elements have been added: ")
print(MyDictionary)
Вывод:
3 elements have been added: {'Values': (1, 'Pairs', 4)}
Обновление элементов
После добавления значения в словарь существующий элемент словаря можно изменить. Для изменения значения используется соответствующий ключ. Например:
dict_sample = {
"Company": "Toyota",
"model": "Premio",
"year": 2012 }
dict_sample["year"] = 2014
print(dict_sample)
Вывод:
{'year': 2014, 'model': 'Premio', 'Company': 'Toyota'}
Удаление элементов
Ключевое слово del можно использовать для удаления элемента с конкретным ключом. Например:
dict_sample = {
"Company": "Toyota",
"model": "Premio",
"year": 2012 }
del dict_sample["year"]
print(dict_sample)
Вывод:
{'Company': 'Toyota', 'model': 'Premio'}
Удаление элементов
Другой способ удалить пару ключ-значение — функция pop() с ключом записи в виде аргумента.
Например:
dict_sample = {
"Company": "Toyota",
"model": "Premio",
"year": 2012 }
dict_sample.pop("year")
print(dict_sample)
Вывод:
{'Company': 'Toyota', 'model': 'Premio'}
Удаление элементов
Функция popitem() удаляет последний элемент в словаре. Для нее не нужно указывать конкретный ключ. Примеры:
dict_sample = {
"Company": "Toyota",
"model": "Premio",
"year": 2012 }
dict_sample.popitem()
print(dict_sample)
Вывод:
{'Company': 'Toyota', 'model': 'Premio'}
Удаление элементов
Что делать, если нужно удалить целый словарь? Это будет сложно и займет много времени, если пользоваться этими методами к каждому ключу. Вместо этого можно использовать ключевое слово del для целого словаря. Например:
dict_sample = {
"Company": "Toyota",
"model": "Premio",
"year": 2012 }
del dict_sample
print(dict_sample)
Вывод:
NameError: name 'dict_sample' is not defined
Другие методы для словарей
- Метод len()
- Метод copy()
- Метод 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)
Предположим, что нужно создать словарь с тремя ключами и одинаковым значением. Это можно сделать следующим образом:
name = ('John', 'Nicholas', 'Mercy')
age = (25, 17)
dict_sample = dict.fromkeys(name, age)
print(dict_sample)
Вывод:
{'John': 25, 'Mercy': 25, 'Nicholas': 25}
Другие методы для словарей
Метод update ()
Метод update() реализует своеобразную операцию конкатенации для словарей. Он объединяет ключи и значения одного словаря с ключами и значениями другого. При совпадении ключей в итоге сохранится значение словаря, указанного в качестве аргумента метода update().
В Python 3.9 появились операторы | и |=, которые реализуют операцию конкатенации словарей.
x = {"key1": "value1 from x", "key2": "value2 from x"}
y = {"key2": "value2 from y", "key3": "value3 from y"} x | y
{'key1': 'value1 from x', 'key2': 'value2 from y', 'key3': 'value3 from y'} y | x
{'key2': 'value2 from x', 'key3': 'value3 from y', 'key1': 'value1 from x'}
https://docs.python.org/3/whatsnew/3.9.html
Другие методы для словарей
info1 = {'name': 'Bob',
'age': 25,
'job': 'Dev'}
info2 = {'age': 30,
'city': 'New York',
'email': '[email protected]'}
info1.update(info2)
print(info1)
{'name': 'Bob', 'age': 30, 'job': 'Dev', 'city': 'New York', 'email': '[email protected]'}
Другие методы для словарей
Метод setdefault ()
Метод dict.setdefault() вернет значение словаря dict, соответствующее ключу key.
Если указанный ключ key отсутствует, вставит его в словарь dict со значением default и вернет значение default.
Если значение по умолчанию default не установлено и ключ отсутствует, метод вставит ключ в словарь со значением None, при этом никакое значение не возвращается.
По умолчанию default имеет значение None. Этот метод никогда не вызывает исключения KeyError.
x = {'one': 0, 'two': 20, 'three': 3, 'four': 4} x.setdefault('one') # 0 x.setdefault('ten') x # {'one': 0, 'two': 20, 'three': 3, 'four': 4, 'ten': None} x.setdefault('six', 6) # 6 x # {'one': 0, 'two': 20, 'three': 3, 'four': 4, 'ten': None, 'six': 6} x.setdefault('six', 10) # 6 x # {'one': 0, 'two': 20, 'three': 3, 'four': 4, 'ten': None, 'six': 6}" width="640"
Другие методы для словарей
x = {'one': 0, 'two': 20, 'three': 3, 'four': 4}
x.setdefault('one')
# 0
x.setdefault('ten')
x
# {'one': 0, 'two': 20, 'three': 3, 'four': 4, 'ten': None}
x.setdefault('six', 6)
# 6
x
# {'one': 0, 'two': 20, 'three': 3, 'four': 4, 'ten': None, 'six': 6}
x.setdefault('six', 10)
# 6
x
# {'one': 0, 'two': 20, 'three': 3, 'four': 4, 'ten': None, 'six': 6}
Вложенные словари
Словари могут содержать другие словари, которые сами, в свою очередь, содержат словари, и так далее на любую глубину. Такие словари называются вложенными словарями (мы уже сталкивались с вложенными списками и кортежами). Вложенные словари – один из способов представления структурированной информации.
Вложенный словарь создается как обычный, только каждое значение в нем – другой словарь.
Приведенный ниже код создает словарь для хранения информации о сотрудниках некоторой компании.
info = {'emp1': {'name': 'Timur', 'job': 'Teacher'},
'emp2': {'name': 'Ruslan', 'job': 'Developer'},
'emp3': {'name': 'Rustam', 'job': 'Tester'}}
Вложенные словари
Тот же самый словарь info может быть создан по-другому:
info = dict(emp1 = {'name': 'Timur', 'job': 'Teacher'},
emp2 = {'name': 'Ruslan', 'job': 'Developer'},
emp3 = {'name': 'Rustam', 'job': 'Tester'})
или
ids = ['emp1', 'emp2', 'emp3']
emp_info = [{'name': 'Timur', 'job': 'Teacher'},
{'name': 'Ruslan', 'job': 'Developer'},
{'name': 'Rustam', 'job': 'Tester'}]
info = dict(zip(ids, emp_info))
s = 'abc' t = (10, 20) u = (-5, -10, -15) list(zip(s,t,u)) [('a', 10, -5), ('b', 20, -10), ('c', 30, -15)] Что будет, если передать значения разной длины?" width="640"
Вложенные словари
Функция zip берёт на вход несколько списков и создаёт из них список кортежей, такой, что первый элемент полученного списка содержит кортеж из первых элементов всех списков-аргументов.
s = 'abc'
t = (10, 20)
u = (-5, -10, -15)
list(zip(s,t,u))
[('a', 10, -5), ('b', 20, -10), ('c', 30, -15)]
Что будет, если передать значения разной длины?
Вложенные словари
Для того чтобы получить значения определенных элементов во вложенном словаре, необходимо указать их ключи в нескольких квадратных скобках подобно тому, как мы получали значения во вложенных списках.
info = {'emp1': {'name': 'Timur', 'job': 'Teacher'},
'emp2': {'name': 'Ruslan', 'job': 'Developer'},
'emp3': {'name': 'Rustam', 'job': 'Tester'}}
print(info['emp1']['name'])
print(info['emp2']['job'])
Что выведет программа?
Вложенные словари
Чтобы изменить значение определенного элемента во вложенном словаре, необходимо обратиться к его ключу и использовать оператор присвоения (=).
info = {'emp1': {'name': 'Timur', 'job': 'Teacher'},
'emp2': {'name': 'Ruslan', 'job': 'Developer'},
'emp3': {'name': 'Rustam', 'job': 'Tester'}}
info['emp1']['job'] = 'Manager'
print(info['emp1'])
Вложенные словари
Итерации по вложенным словарям осуществляются как правило двумя циклами for.
info = {'emp1': {'name': 'Timur', 'job': 'Teacher'},
'emp2': {'name': 'Ruslan', 'job': 'Developer'},
'emp3': {'name': 'Rustam', 'job': 'Tester'}}
for emp in info:
print('Employee ID:', emp)
for key in info[emp]:
print(key + ':', info[emp][key])
print()
for emp, inf in info.items():
print('Employee ID:', emp)
for key in inf:
print(key + ':', inf[key])
print()
Генераторы в словарях
Генераторы словаря могут выполнять итерации по любому итерируемому объекту: списки, кортежи, строки, словари.
dct = {c: c * 3 for c in 'ORANGE'}
print(dct)
{'O': 'OOO', 'R': 'RRR', 'A': 'AAA', 'N': 'NNN', 'G': 'GGG', 'E': 'EEE'}


Разработка программных модулей 