Словарь — неупорядоченная структура данных, которая позволяет хранить пары «ключ — значение».
# Создание словаря c помощью литерала
student = {'name': 'Ivan', 'age': 12}
credentials = {'email': 'hacker1337@mail.ru', 'password': '123456'}
# Создание словаря c помощью функции dict()
student = dict(name='Ivan', age=12)
credentials = dict(email='hacker1337@mail.ru', password='123456')
Для получения значения конкретного ключа используются квадратные скобки [].
# Получаем значение с ключом 'name'
student = dict(name='Ivan', age=12)
print(student['name']) # -> Ivan
Обновление существующих значений происходит абсолютно также.
# Получаем значение с ключом 'name'
student = dict(name='Ivan', age=12)
student['name'] = 'Vasya'
print(student['name']) # -> Vasya
Для удаления ключа и соответствующего значения из словаря можно использовать del
# Удаление ключа 'age'
student = dict(name='Ivan', age=12)
del student['age']
print(student) # -> {'name': 'Ivan'}
Метод get() возвращает значение по указанному ключу. Если указанного ключа не существует, метод вернёт None. Также можно указать значение по умолчанию, которое будет возвращено вместо None, если ключа в словаре не окажется.
# Использование метода get()
student = dict(name='Ivan', age=12)
print(student.get('name')) # -> Ivan
print(student.get('lastname')) # -> None
print(student.get('lastname', 'No key')) # -> No key
Метод pop() удаляет ключ и возвращает соответствующее ему значение.
# Использование метода pop()
sneakers = dict(brand='Adidas', price='9990 RUB', model='Nite Jogger')
model = sneakers.pop('model')
print(sneakers) # -> {'brand': 'Adidas', 'price': '9990 RUB'}
print(model) # -> Nite Jogger
Метод keys() возвращает специальную коллекцию ключей в словаре.
# Использование метода keys()
sneakers = dict(brand='Adidas', price='9990 RUB', model='Nite Jogger')
print(sneakers.keys()) # -> dict_keys(['brand', 'price', 'model'])
# dict_keys - это неизменяемая коллекция элементов.
keys = list(sneakers.keys())
print(keys) # -> ['brand', 'price', 'model']
Метод values() возвращает специальную коллекцию значений в словаре.
# Использование метода values()
sneakers = dict(brand='Adidas', price='9990 RUB', model='Nite Jogger')
print(sneakers.values()) # -> dict_values(['Adidas', '9990 RUB', 'Nite Jogger'])
# dict_values - это неизменяемая коллекция элементов.
values = list(sneakers.values())
print(values) # -> ['Adidas', '9990 RUB', 'Nite Jogger']
Метод items() возвращает пары «ключ — значение» в формате кортежей.
# Использование метода items()
sneakers = dict(brand='Adidas', price='9990 RUB', model='Nite Jogger')
print(sneakers.items()) # -> dict_items([('brand', 'Adidas'), ('price', '9990 RUB'), ('model', 'Nite Jogger')])
# dict_items - это неизменяемая коллекция элементов.
items = list(sneakers.items())
print(items) # -> [('brand', 'Adidas'), ('price', '9990 RUB'), ('model', 'Nite Jogger')]
sneakers = dict(brand='Adidas', price='9990 RUB', model='Nite Jogger')
# Вывод ключей словаря с помощью цикла for
for key in sneakers:
print(key)
# -> brand
# -> price
# -> model
# Вывод значений словаря с помощью цикла for
for value in sneakers.values():
print(value)
# -> Adidas
# -> 9990 RUB
# -> Nite Jogger
# Вывод ключей и значений словаря с помощью цикла for
for key, value in sneakers.items():
print(key, value)
# -> brand Adidas
# -> price 9990 RUB
# -> model Nite Jogger
Метод setdefault() возвращает значение ключа, но если его нет, создает ключ с указанным значением (по умолчанию None).
# Метод setdefault()
student = dict(name='Ivan', age=12)
student.setdefault('lastname', 'Ivanov')
print(student) # -> {'name': 'Ivan', 'age': 12, 'lastname': 'Ivanov'}
# Пользователь вводит имя, фамилия, возраст. Создайте словарь user и запишите данные пользователя в него.
firstname = input('Enter your firstname: ')
lastname = input('Enter your lastname: ')
age = input('Enter your age: ')
user = dict(firstname=firstname, lastname=lastname, age=age)
print(user)
# Выведите самое часто встречающееся слово в введенной строке.
list_of_words = ['hello', 'hello', 'hi']
words = {}
for word in list_of_words:
words[word] = words.get(word, 0) + 1
# Функция max может получать функцию в качестве второго аргумента
freq_word = max(words, key=words.get)
print(freq_word)
Пользователь вводит число K - количество фруктов. Затем он вводит K фруктов в формате: название фрукта и его количество. Добавьте все фрукты в словарь, где название фрукта - это ключ, а количество - значение. Например:
# Ввод:
>> 3 # Количество фруктов
>> Яблоко
>> 3
>> Апельсин
>> 3
>> Мандарин
>> 10
# Вывод:
>> {'Яблоко': 3, 'Апельсин': 3, 'Мандарин': 10}
Пользователь вводит число N. Затем он вводит личные данные (имя и возраст) своих N друзей. Создайте список friends и добавьте в него N словарей с ключами name и age. Найдите самого младшего из друзей и выведите его имя.
# Ввод:
>> 3 # Количество друзей
>> Иван
>> 11
>> Саша
>> 12
>> Леша
>> 10
# Вывод:
>> Леша
Пользователь вводит число N. Затем он вводит личные данные (имя и возраст) своих N друзей. Создайте список friends и добавьте в него N словарей с ключами name и age. Выведите средний возраст всех друзей и самое длинное имя.
# Ввод:
>> 3 # Количество друзей
>> Иван
>> 12
>> Иннокентий
>> 20
>> Леша
>> 10
# Вывод:
>> 14
>> Иннокентий
"Пора учить английский язык", - сказал себе Степа и решил написать программу для изучения английского языка. Программа получает на вход слово на английском языке и несколько его переводов на русском языке. Составьте словарь, в котором ключ - это английское слово, а значение - это список русских слов. В этой задаче нужно использовать строчный метод split().
# Ввод:
>> 4 # Количество слов
>> apple - яблоко
>> orange - оранжевый, рыжий, апельсин
>> grape - виноград, виноградный, гроздь
>> easy - простой, легкий, нетрудный, удобный, несложный
# Вывод:
>> {'apple': ['яблоко'], 'orange': ['оранжевый', 'рыжий', 'апельсин'], 'grape': ['виноград', 'виноградный', 'гроздь'], 'easy': ['простой', 'легкий', 'нетрудный', 'удобный', 'несложный']}