Перейти к основному содержимому

Словари

Словарь — неупорядоченная структура данных, которая позволяет хранить пары «ключ — значение».

Создание словаря 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)  
delstudent['age']

print(student)# -> {'name': 'Ivan'}

Использование метода get()​

Метод get() возвращает значение по указанному ключу. Если указанного ключа не существует, метод вернёт None. Также можно указать значение по умолчанию, которое будет возвращено вместо None, если ключа в словаре не окажется.

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​

forkeyinsneakers:  
print(key)

# -> brand
# -> price
# -> model

# Вывод значений словаря с помощью цикла for

forvalueinsneakers.values():
print(value)

# -> Adidas
# -> 9990 RUB
# -> Nite Jogger

# Вывод ключей и значений словаря с помощью цикла for

forkey, valueinsneakers.items():
print(key, value)

# -> brand Adidas
# -> price 9990 RUB
# -> model Nite Jogger

Метод setdefault()​

Метод setdefault() возвращает значение ключа, но если его нет, создает ключ с указанным значением (по умолчанию None).

student=dict(name='Ivan',age=12)  
student.setdefault('lastname','Ivanov')

print(student)# -> {'name': 'Ivan', 'age': 12, 'lastname': 'Ivanov'}

Решение задач​

1.Пользователь​

Пользователь вводит имя, фамилия, возраст. Создайте словарь 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)

2.Найти слово​

Выведите самое часто встречающееся слово в введенной строке.

list_of_words=['hello','hello','hi']  
words={}

forwordinlist_of_words:
words[word]=words.get(word,0)+1

# Функция max может получать функцию в качестве второго аргумента
freq_word=max(words,key=words.get)

print(freq_word)

Задачи для самостоятельного решения​

1.Фрукты​

Пользователь вводит число K - количество фруктов. Затем он вводит K фруктов в формате: название фрукта и его количество. Добавьте все фрукты в словарь, где название фрукта - это ключ, а количество - значение. Например:

# Ввод:  
>>3# Количество фруктов
>>Яблоко
>>3
>>Апельсин
>>3
>>Мандарин
>>10
# Вывод:
>>{'Яблоко':3,'Апельсин':3,'Мандарин':10}

2.Старший и младший​

Пользователь вводит число N. Затем он вводит личные данные (имя и возраст) своих N друзей. Создайте список friends и добавьте в него N словарей с ключами name и age. Найдите самого младшего из друзей и выведите его имя.

# Ввод:  
>>3# Количество друзей
>>Иван
>>11
>>Саша
>>12
>>Леша
>>10
# Вывод:
>>Леша

3.Еще немного о друзьях​

Пользователь вводит число N. Затем он вводит личные данные (имя и возраст) своих N друзей. Создайте список friends и добавьте в него N словарей с ключами name и age. Выведите средний возраст всех друзей и самое длинное имя.

# Ввод:  
>>3# Количество друзей
>>Иван
>>12
>>Иннокентий
>>20
>>Леша
>>10
# Вывод:
>>14
>>Иннокентий

4.Английский словарь​

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

В этой задаче нужно использовать строчныйметод split().

# Ввод:  
>>4# Количество слов
>>apple-яблоко
>>orange-оранжевый, рыжий, апельсин
>>grape-виноград, виноградный, гроздь
>>easy-простой, легкий, нетрудный, удобный, несложный
# Вывод:
>>{'apple': ['яблоко'],'orange': ['оранжевый','рыжий','апельсин'],'grape': ['виноград','виноградный','гроздь'],'easy': ['простой','легкий','нетрудный','удобный','несложный']}