Словари и множества

Словари и множества

Словарь (dictionary) в Python — это структура данных, представляющая собой коллекцию пар ключ-значение. Множество (set) — это неупорядоченная коллекция уникальных элементов.

Словари

Словарь создается с помощью фигурных скобок {} или функции dict(). Ключами могут быть любые неизменяемые объекты (строки, числа, кортежи), а значениями — любые объекты.

slovar = {'apple': 'яблоко', 'banana': 'банан'}
slovar['orange'] = 'апельсин'  # Добавление новой пары ключ-значение
print(slovar['apple'])  # Выведет 'яблоко'
del slovar['banana']  # Удаление элемента по ключу

Основные методы работы со словарями:

  • slovar.keys() — возвращает ключи словаря.
  • slovar.values() — возвращает значения словаря.
  • slovar.items() — возвращает пары ключ-значение.
  • slovar.get(key, default=None) — возвращает значение по ключу, если ключ отсутствует, возвращается default.
  • slovar.update(other_dict) — обновляет словарь, добавляя пары ключ-значение из другого словаря.

Множества

Множество создается с помощью фигурных скобок {} или функции set(). Множества содержат уникальные элементы и не сохраняют порядок элементов.

mnojestvo = {1, 2, 3}
mnojestvo.add(4)  # Добавление нового элемента
mnojestvo.remove(2)  # Удаление элемента
print(mnojestvo)  # Выведет {1, 3, 4}


# Исходный список
my_list = [1, 2, 3, 3, 4, 5, 5, 6]

# Создание множества из списка
my_set = set(my_list)

print(my_set)  # Вывод: {1, 2, 3, 4, 5, 6}

Основные операции над множествами:

  • mnojestvo1 | mnojestvo2 — объединение двух множеств.
  • mnojestvo1 & mnojestvo2 — пересечение двух множеств.
  • mnojestvo1 - mnojestvo2 — разница двух множеств.
  • mnojestvo1 ^ mnojestvo2 — симметричная разница двух множеств.

Итерация по словарям в Python

Словари (или dict) в Python являются одной из самых мощных и часто используемых структур данных. Они позволяют хранить данные в виде пар «ключ-значение». В этом уроке мы рассмотрим различные способы итерации по словарю.

Основные понятия:

  • Ключ (key): Уникальный идентификатор элемента в словаре.
  • Значение (value): Данные, связанные с ключом.

Создание словаря:

# Пример создания словаря
my_dict = {
    'apple': 1,
    'banana': 2,
    'cherry': 3
}

Итерация по ключам:

Самый простой способ итерации по словарю – это перебор его ключей. Для этого используется метод .keys() или просто цикл for.

С использованием метода .keys()

for key in my_dict.keys():
    print(key)

Вывод:

apple
banana
cherry

Без использования метода .keys()

По умолчанию, при использовании цикла for, словарь возвращает свои ключи:

for key in my_dict:
    print(key)

Вывод будет таким же:

apple
banana
cherry

Итерация по значениям:

Если вам нужно получить только значения словаря, используйте метод .values().

for value in my_dict.values():
    print(value)

Вывод:

1
2
3

Итерация по парам ключ-значение:

Для одновременного доступа к ключу и значению можно использовать метод .items().

for key, value in my_dict.items():
    print(f'Фрукт: {key}, Количество: {value}')

Вывод:

Фрукт: apple, Количество: 1
Фрукт: banana, Количество: 2
Фрукт: cherry, Количество: 3

Итерация с сортировкой ключей:

Иногда требуется пройти по элементам словаря в определенном порядке, например, отсортированном по ключам. Для этого можно воспользоваться функцией sorted().

for key in sorted(my_dict):
    print(f'{key}: {my_dict[key]}')

Вывод:

apple: 1
banana: 2
cherry: 3

Итерация с проверкой условий:

Часто бывает необходимо выполнять действия над элементами словаря при выполнении определённых условий.

for key, value in my_dict.items():
    if value % 2 == 0:
        print(f'Чётное количество: {key} - {value}')

Вывод:

Чётное количество: banana - 2

Итерация с изменением значений:

При необходимости изменить значение элементов словаря во время итерации следует быть осторожным, так как изменение словаря во время итерации может привести к ошибкам. Лучше создать новый словарь с измененными значениями.

new_dict = {}
for key, value in my_dict.items():
    new_value = value * 10
    new_dict[key] = new_value

print(new_dict)

Вывод:

{'apple': 10, 'banana': 20, 'cherry': 30}

Эти примеры охватывают основные аспекты работы со словарями в Python. Практикуйтесь с различными типами данных и задачами, чтобы лучше освоить работу с этой структурой!

Оператор * (звездочка) — распаковка

*fruits

Что делает * (оператор распаковки):

  1. Берет итерируемый объект (словарь fruits)
  2. «Распаковывает» его элементы
  3. Для словарей распаковываются только КЛЮЧИ
# fruits = {'apple': 'яблоко', 'banana': 'банан'}
*fruits  # превращается в: 'apple', 'banana'

Когда вы применяете * к словарю, Python получает только ключи:

fruits = {'apple': 'яблоко', 'banana': 'банан'}

# fruits.keys() возвращает ключи
keys = fruits.keys()  # dict_keys(['apple', 'banana'])

# *fruits распаковывает эти ключи
# Эквивалентно:
print('apple', 'banana')

Параметр sep='\n'

print(*fruits, sep='\n')

Что делает sep='\n':

  • sep (separator) — разделитель между аргументами
  • По умолчанию sep=' ' (пробел)
  • sep='\n' означает: разделять аргументы ПЕРЕНОСОМ СТРОКИ

Без sep='\n':

print(*fruits)  # print('apple', 'banana')
# Вывод: apple banana (в одной строке, через пробел)
print(*fruits)  # print('apple', 'banana')
# Вывод: apple banana (в одной строке, через пробел)

С sep='\n':

print(*fruits, sep='\n')  # print('apple', 'banana', sep='\n')
# Вывод: 
# apple
# banana
# (каждый в отдельной строке)

Источник: https://stepik.org/lesson/1582309/step/9?unit=1603658

Было ли это полезно?

0 / 0