July 13, 2022

Множества и словари

Вернуться к содержанию

Множества

В Python есть понятия списков, множеств и словарей.

Список
a=['Трубадур', 'Кот', 'Пёс', 'Осёл', 'Петух']
Пример списка

Или такой:

Пример списка №2. Можно писать в строку и переносить строки.

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

Множество
a={'Ничего на свете лучше нету',
    'Мы к вам заехали на час',
    'Рок-колыбельная',
    'Луч Солнца Золотого',
    'Ничего на свете лучше нету',
    'Куда ты, тропинка, меня завела',
    'А как известно, мы народ горячий'
}

Список - это упорядоченная коллекция, множества - неупорядоченная. По индексу (как в списке) обратиться к множеству нельзя.

Команды для работы:

1. Cделать множество из списка

a=['Трубадур', 'Кот', 'Пёс', 'Осёл', 'Петух']
musicians=set(a) # получили множество.

2. Сделать список из множества

num_set = {1, 6, 5, 4, 3, 2,2,4,6}
a=list(num_set)

3. Добавить элемент в множество:

playlist = { 'Venus', 'Yesterday', 'Fireball', 'Time', 'Poison' }
playlist.add('Thunderstruck') # добавляет Thunderstruck в playlist
print(playlist)
Добавить элемент в множество из списка можно циклом и методом .add как в примере ниже:
playlist = {    
'Venus',    'Yesterday',    'Fireball', 
   'Time',    'Poison',    'Thunderstruck'}

new_music = [ 
'Kashmir',    'Smoke on the Water',    
'Bohemian Rhapsody',    'Zombie',    
'Let It Be',    'Its My Life',]

# for new in new_music:
     playlist.add(new)
Либо можно использовать второй вариант, который короче:
преобразуем список в множество и затем объединим два множества.

pl3 = playlist.union(set(new_music))
----------------------------------------------------------------------

2. Объединить множества:

playlist_1 = {'Три белых коня', 'Happy new year', 'Снежинка'}
playlist_2 = {'Last christmas', 'Снежинка', 'Happy new year'}
playlist_3 = playlist_1.union(playlist_2)
print(playlist_3)

3. Объединить списки:

playlist_1 = ['Три белых коня', 'Happy new year', 'Снежинка']
playlist_2 = ['Last christmas', 'Снежинка', 'Happy new year']
playlist_3 = [playlist_1 + playlist_2]

4.Если нужно найти песни, которые присутствуют в одном плейлисте, но отсутствуют во втором — поможет метод difference ().

playlist_1 = {'Голубой вагон', 'Облака', 'Yesterday', 'Наше лето'}
playlist_2 = {'Наше лето', 'Голубой вагон', 'Облака'}
playlist_3 = playlist_1.difference(playlist_2)

print(playlist_3) 
# будет напечатано - {'Yesterday'}

5.Поиск одинаковых элементов в двух множествах

films_1={'Форсаж', 'Достучаться до небес', 'Мстители: война бесконечности'}
films_2 = {'Мстители: война бесконечности', 'Форсаж', 'Матрица'}
films_3 = films_1.intersection(films_2)

print(films_3)
# будет напечатано - {'Форсаж', 'Мстители: война бесконечности'}

Также можно использовать знаки | и & для объединения и поиска одинаковых элементов:

playlist_1 = {'Три белых коня', 'Happy new year', 'Снежинка'}
playlist_2 = {'Last christmas', 'Снежинка', 'Happy new year'}
playlist_3 = playlist_1.union(playlist_2) # или playlist1 | playlist2
print(playlist_3)
# {'Три белых коня', 'Happy new year', 'Снежинка', 'Last christmas'}
playlist_3 = playlist_1 & playlist_2
print(playlist_3)
# result {'Happy new year', 'Снежинка'}

Словари

Пример словаря

Обращение к словарю по ключу выдаст значение. Пример ниже:

english = {
    'рука': 'hand',
    'нога': 'leg',
    'хвост': 'tail',
    'питон': 'python',
    'бэкенд-разработчик': 'back-end developer'
}
# Доступ по ключу: как по-английски рука?
print(english['рука'])

Важно понимать, что ключи ведут себя как множества, а значения - как списки.

  1. Извлекаем значения словаря в одну коллекцию:
favorite_songs = {
    'Тополиный пух': 'Иванушки international',
    'Город золотой': 'Аквариум',
    'Звезда по имени Солнце': 'Кино'
}
a=favorite_songs.values()
print(a) 

Аналогично командой a=favorite_songs.keys() будут извлечены значения ключей.

2. Превращение словаря в список и множество:

3. Замена значений в словаре по ключу:

english = {
    'рука': 'hand',
	'нога': 'leg',
    'хвост': 'tail',
    'питон': 'python',
	'бэкенд-разработчик': 'back-end developer'
}

english['рука'] = 'arm' # Элементу с ключом 'рука' присвоим новое значение
print(english['рука'])
english['голова'] = 'head'# также таким методом можно добавлять в словарь
                          # новые элементы
Одновременное добавление нескольких элементов
english = {
    'рука': 'arm',
    'нога': 'leg',
    'хвост': 'tail',
    'питон': 'python',
    'бэкенд-разработчик': 'back-end developer',
    'голова': 'head'
}
# Объявим новый словарь
new_words = {'мозг': 'brain', 'логика': 'logic'}

# Добавим в словарь english элементы словаря new_words
english.update(new_words)

# Посмотрим, что теперь хранится в словаре english
print(english)

Циклы в словарях

favorite_songs = {
    'Тополиный пух': 'Иванушки international',
    'Город золотой': 'Аквариум',
    'Звезда по имени Солнце': 'Кино',
    'Space Oddity': 'David Bowie',
    'Рыба': 'Аквариум',
    'Серенада Трубадура': 'Муслим Магомаев',
}
# Извлечём и напечатаем только значения (values) каждого элемента
for singer in favorite_songs.values():
	print('Доктор, я больше не могу слушать исполнителя ' + singer)
	
# А в этом цикле извлечём и напечатаем только ключи (keys) словаря
for music in favorite_songs.keys():
	print('Доктор, я каждый день по три раза слушаю песню ' + music)

Собираем словарь из двух списков:

friends_names = ['Аня', 'Коля', 'Лёша', 'Лена', 'Миша']
friends_cities = ['Владивосток', 'Красноярск', 'Москва', 'Обнинск', 'Чебоксары']
# Объявлен пустой словарь, его нужно будет наполнить элементами, 
# каждый из которых составлен по схеме "имя: город"

friends =  {}
for i in range(0, len(friends_names)):
    friends[friends_names[i]] = friends_cities[i]
print("Лена живёт в городе " + friends['Лена'])

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

dic = {"A":1, "B":2}

def dicMemberCheck(key, dicObj):
    if key in dicObj:
        print("Existing key")
    else:
        print("Not existing")
        
dicMemberCheck("A")
dicMemberCheck("C")
# Результат: Existing key
# Результат: Not existing

Список всех команд в статье:

1 musicians=set(a) # получили множество
2 a=list(num_set) #сделали список из множества
3 playlist.add('Thunderstruck')#добавляет Thunderstruck в playlist(множество)
4 playlist_3 = playlist_1.union(playlist_2) #объединили множества
5 playlist_3 = playlist_1.difference(playlist_2) #нашли различия в множествах
6 films_3 = films_1.intersection(films_2) #нашли пересечения во множествах
7 english['рука'] = 'arm' # Заменили значение по ключу "рука" или 
                          # добавили в словарь 
8 a=favorite_songs.values() # забрали значения из словаря
9 a=favorite_songs.keys() # забрали ключи из словаря
10 english.update(new_words) #добавление словаря в словарь
11 english.append('слово') # добавление элемента в список 
12 data.get(points, 'Шторм') # достает значение ключа из словаря.

Ссылка на шпаргалку по теме Словари и Множества от Yandex.

Все методы для словарей тут

Вернуться к содержанию