26.12.2023
Пятый день обучения 25,12,2023
Словари dict
Словарь это набор элементов, и каждый элемент это пара ключ: значение
В одном словаре не может быть двух одинаковых ключей
Порядок элементов в словаре не имеет значения
Индексов у элементов в словаре нет.
my_motobike = {
'brand': 'Ducati',
'price': 2500,
'engine_vol': 1.2,
}
Изменение и удаление значений в словарях
my_motobike = {
'brand': 'Ducati',
'price': 2500,
'engine_vol': 1.2,
}
print(my_motobike['brand'])
#Ducati
my_motobike['price'] = 20000
print(my_motobike)
**Добавление нового ключа/либо перезапись**
my_motobike['is_new'] = True
#{'brand': 'Ducati', 'price': 20000, 'engine_vol': 1.2, 'is_new': True}
**Удаление элементов:**
del my_motobike['is_new']
#{'brand': 'Ducati', 'price': 20000, 'engine_vol': 1.2}
Использование переменных в словарях
my_motobike = {
'brand': 'Ducati',
'price': 2500,
'engine_vol': 1.2,
}
key_name = 'brand'
my_motobike[key_name] = 'BMW'
print(my_motobike)
#{'brand': 'BMW', 'price': 20000, 'engine_vol': 1.2}
**Вложенные словари**
my_motobike = {
'brand': 'Ducati',
'price_info': {
'price': 2500,
'engine_vol': 1.2,
}
}
print(my_motobike['price_info']['price'])
#2500
**Использование переменных для создания словарей**
brand = 'Ducati'
bike_price = 25000
engine_volume = 1.2
my_motobike = {
'brand': brand,
'price': bike_price,
'engine_volume': engine_volume,
}
print(my_motobike)
#{'brand': 'Ducati', 'price': 25000, 'engine_volume': 1.2}
**Обработка ошибки при отстутсвии ключа в словаре**
print(my_motobike.get('qty'))
#None
**Отдавать значение по умолчанию если нет ключа:**
print(my_motobike.get('qty', 0))
Создание словаря из списка (конвертация)
my_list = [2.5, True, 'Hallo']
my_dict = dict(my_list)
print(my_dict)
#TypeError: cannot convert dictionary update sequence element #0 to a sequence
my_list = [['type', 2.5], ['True', 333], ['text','Hallo']]
my_dict = dict(my_list)
print(my_dict)
#{'type': 2.5, 'True': 333, 'text': 'Hallo'}
Кортежи tuple
Упорядоченная последовательность элементов
Кортежи изменять нельзя
В кортеже может быть как однотипный так и несколько типов значений
Элементы помещаются между парами круглых способ ()
У первого элемента индекс 0 как и у списков
my_nams = (10, 55, 2255, 22)
print(my_nams)
#(10, 55, 2255, 22)
***Удалять и заменять значения нельзя*
Картеж словарей**
users = (
{
'user_id': 134,
'user_name': 'Aleksey'
},
{
'user_id': 831,
'user_name': 'Natalia'
}
)
print(users[1]['user_id'])
#831
users[1]['user_id'] = 100
print(users[1]['user_id'])
#100
print(users)
#({'user_id': 134, 'user_name': 'Aleksey'}, {'user_id': 100, 'user_name': 'Natalia'})
Методы для кортежей
count и index
методов для добавления новых элементов нет
методы кортежей наследуются от класса tuple
posts_ids = (111, 25, 545, 444)
print(posts_ids.count(111))
#1
**Кортеж можно конвертировать в список**
posts_ids = (111, 25, 545, 444)
posts_ids_list = list(posts_ids)
posts_ids_list.append(351)
print(posts_ids_list)
#[111, 25, 545, 444, 351]
posts_ids_list = tuple(posts_ids_list)
print(posts_ids_list)
#(111, 25, 545, 444, 351)
Наборы set
Это не упорядоченная последовательность элементов.
Набор содержит только уникальные элементы
В наборах сохраняют однотипные данные
Индексов у элементов нет.
my_fruts = {'apple', 'banana', 'lime'}
posts_ids = {125, 2212, 545}
user_inputs = {True, 'hi!', 10.5}
print(my_fruts)
#{'lime', 'banana', 'apple'}
print(type(my_fruts))
#<class 'set'>
**Дубликаты удаляются**
user_inputs = {True, 'hi!', 10.5, 10.5, 10.5}
print(user_inputs)
#{'hi!', 10.5, True}
***Если сравнивать, наборы данных будут одинаковые***
my_fruts = {'apple', 'banana', 'lime'}
my_fruts_ty = {'banana', 'apple', 'lime'}
Можно через магический метод __getitem__(2) можно обратиться к элементу (получить элемент)
но только через список []
**Создание пустого набора**
my_set = set()
Методы наборов
.add(element)
– добавляет элемент в набор..remove(element)
– удаляет элемент из набора. Если элемент отсутствует, вызывает ошибку..discard(element)
– удаляет элемент из набора, если он присутствует. Если элемент отсутствует, не вызывает ошибку..pop()
– удаляет и возвращает случайный элемент из набора..clear()
– удаляет все элементы из набора..copy()
– создает копию набора..union(set)
– объединение наборов.intersection(set)
– возвращает новый набор, содержащий только элементы, которые присутствуют и в исходном наборе, и в указанном наборе..difference(set)
– возвращает новый набор, содержащий только элементы, которые присутствуют в исходном наборе, но отсутствуют в указанном наборе..symmetric_difference(set)
– возвращает новый набор, содержащий только элементы, которые присутствуют в одном из наборов, но отсутствуют в обоих наборах одновременно..issubset(set)
– возвращаетTrue
, если все элементы исходного набора присутствуют в указанном наборе, иначе возвращаетFalse
..issuperset(set)
– возвращаетTrue
, если все элементы указанного набора присутствуют в исходном наборе, иначе возвращаетFalse
..isdisjoint(set)
– возвращаетTrue
, если исходный набор и указанный набор не имеют общих элементов, иначе возвращаетFalse
.