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

Словари

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

Создание словаря 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': ['простой','легкий','нетрудный','удобный','несложный']}