Пятый день обучения 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.